0

這很奇怪。jQuery UI自動完成缺少_renderItem

$.fn.autoList = function() { 

return this.each(function() { 

    var self = this; 

    // initiate autocomplete 
    $(self).autocomplete({ 
     source: _li_data, 
     minLength: 2, 
     select: function (event, ui) { 
      ui.item.checkbox.prop('checked', true).trigger('change'); 
      ui.item.checked = !ui.item.checked; 
      $(event.target).val(''); 
      return false; 
     } 
    }) 
    .data('autocomplete')._renderItem = function (ul, item) { 
        if (item.checked) { 
         return $("<li>") 
           .text(item.label) 
           .addClass('preselected') 
           .appendTo(ul); 
        } 
      }; 

});} 

當輸入和結果應該呈現之前,我得到以下錯誤。 Uncaught TypeError: Cannot read property 'data' of undefined在jQuery的UI-1.9.0.js:6672,其具有下面的代碼

_renderItemData: function(ul, item) { 
    return this._renderItem(ul, item).data("ui-autocomplete-item", item); 
}, 

我想要做的是一個「預選」類添加到-li-項目中的-ul-自動完成下拉列表。我堅持...

+0

你檢查[這](http://stackoverflow.com/questions/14461787/jqueryui-1-10-0-autocompleter-renderitem-problems)? – anpsmn 2015-03-13 09:52:01

+0

是的。不幸的是,使用數據('uiAutocomplete')或數據('ui-autocomplete')或普通數據('autocomplete')不起作用並引發相同的錯誤。使用__renderItem不會引發錯誤,但它也不會執行任何操作。 __renderItem = function(ul,item){ \t \t \t console.log(item,'item'); \t \t}; 不記錄。 – pop 2015-03-13 09:56:03

+1

那麼,如果if條件'(item.checked)'爲false,'_renderItem'函數將返回'undefined'。顯然你不能調用那個 – blgt 2015-03-13 10:00:54

回答

1

如果(item.checked)條件爲false,_renderItem函數將返回undefined。它可能只是需要一個else塊:

// ... 
._renderItem = function (ul, item) { 
       if (item.checked) { 
        return $("<li>") 
          .text(item.label) 
          .addClass('preselected') 
          .appendTo(ul); 
       } 
       // else 
       return $("<li>").appendTo(ul); 
     };