Skip to main content

Search and Top Navigation

#10575 closed bug (notabug)

Opened August 30, 2014 01:52PM UTC

Closed August 30, 2014 08:13PM UTC

Menu: Removal of anchors has side effects

Reported by: lankymart Owned by:
Priority: minor Milestone: none
Component: ui.menu Version: 1.11.1
Keywords: Cc:
Blocked by: Blocking:
Description

Not sure if this is intended but there are various examples of implementing a header (non selectable list element) but I've found that whatever I try and can't stop the default "ui-menu-item" class being applied to my listitem. I've managed to workout that the examples that work are using 1.8 but I'm using 11.0 and it's defaulting to the "ui-menu-item" and doesn't seem to be over-ridable.

Example of working header

http://stackoverflow.com/a/20676143/692942

http://jsfiddle.net/IrvinDominin/rMkER/

Code Excerpt

      $("#list").autocomplete("instance")._renderMenu = function(ul, items) {
        var self = this;
        $.each( items, function( index, item ) {
          self._renderItemData(ul, item);
          // prepended element still ends up with "ui-menu-item" class??
          if (index == 0) ul.prepend('<li class="ui-header"><span>Returned ' + items.length + ' record(s)</span></li>');
        });
        // attempt to hack css!
        ul.find("li:first-child").removeClass("ui-menu-item");
      };

I've now pin pointed what I think is the cause it appears after 1.10.4 and is present in 1.11.0 it's in the refresh() method in menu.js (previously jquery.ui.menu.js).

It looks like it's due to the requirement for an anchor to be present being removed (see https://github.com/jquery/jquery-ui/blob/3a61627a501cb7ba1ce80046bfabbff0f7f2f517/ui/jquery.ui.menu.js#L325 and https://github.com/jquery/jquery-ui/commit/3a61627a501cb7ba1ce80046bfabbff0f7f2f517#commitcomment-7591515)

Attachments (0)
Change History (1)

Changed August 30, 2014 08:13PM UTC by scottgonzalez comment:1

resolution: → notabug
status: newclosed

The detection wouldn't work as expected anyway, since menu items are now explicitly defined via the items option. See http://jqueryui.com/autocomplete/#categories for an example of how you should be doing this.