我正在使用jquery autoselect并面临鼠标选择<li>
元素的问题
我以下列方式呈现
.data("autocomplete")._renderItem = function(ul, item) {
if(item.category == "-") {
return $("<li class=\"ui-menu-ac-item\" role=\"menuitem\"></li>").
data("item.autocomplete", item).
append("<a class=\"ui-corner-ac-all\" tabindex=\"-1\" "+
" onclick='$(\"#writeRevSearch\").val(\""+item.label+"\");"+
" $(\"#writeRevSearch\").autocomplete(\"close\");'>"+
item.label +
"</a>")
.appendTo(ul);
} else {
return $("<li class=\"ui-menu-ac-item\" role=\"menuitem\"></li>").
data("item.autocomplete", item).
append("<a class=\"ui-corner-ac-all\" tabindex=\"-1\" "
+ "onclick='$(\"#writeRevSearch\").val(\""+item.label+"\");"+
" $(\"#writeRevSearch\").autocomplete(\"close\");'>"+
item.label +
"<span>" + " in " + item.category + " " +"</span>"+
"</a>")
.appendTo(ul);
}
};
问题是如果使用键盘选择项目,事情很好但是如果我使用鼠标从下拉列表中选择任何项目我在这一行上收到错误:
var h=f.item.data("item.autocomplete"),i=a.previous; --->> here ( Telling cant call method data on undefined )
if(a.element[0]!==b.activeElement){
a.element.focus();
a.previous=i;
setTimeout(function(){
a.previous=i;
a.selectedItem=h
},1)
}
false!==a._trigger("select",c,{
item:h
})&&a.element.val(h.value);
a.term=a.element.val();
a.close(c);
a.selectedItem=h
仅在鼠标单击而非键盘选择的情况下才会定义数据。