arn*_*ird 10 jquery select jquery-ui autocomplete jquery-ui-autocomplete
如果我使用_renderItem,我的选择事件不起作用.如果我注释掉我调用_renderItem的最后一段代码,则select事件有效.当我使用_renderItem时,select事件根本不会触发.
var cache = {}, lastXhr;
$("#hifind-find").autocomplete({
source: function(request, response) {
var term = request.term;
if (term in cache) {
response(cache[term]);
return;
}
var posturl = '/hifind/jquery_ui/autocomplete/'+term;
lastXhr = $.post(posturl, function(data, status, xhr) {
cache[term] = data;
if (xhr === lastXhr) {
response(data);
}
}, 'json');
},
delay: 300,
minLength: 1,
select: function(event, ui){
window.location = ui.item.dest;
}
});
$.ui.autocomplete.prototype._renderItem = function(ul, item) {
return $("<li></li>")
.data("item.autocomplete", item)
.append('<img src="' + iconImgPath + item.flag + '-search.png" class="icon-autocomplete-bundle">' + item.label )
.appendTo( ul );
};
Run Code Online (Sandbox Code Playgroud)
如果我这样做,我会得到相同的结果......
$("#hifind-find").autocomplete(myConfig).data("autocomplete")._renderItem = renderItemFunction;
Run Code Online (Sandbox Code Playgroud)
无论哪种方式,选择都不会触发._renderItem做它应该做的事情.它修改了项目并且没有错误,但似乎打破了选择.
And*_*ker 14
我相信这是因为您没有将项目包装在anchor(a)标记中.更新你的代码以包装img在一个锚点,它将工作正常:
$.ui.autocomplete.prototype._renderItem = function(ul, item) {
return $("<li></li>")
.data("item.autocomplete", item)
.append('<a><img src="' + iconImgPath + item.flag + '-search.png" class="icon-autocomplete-bundle">' + item.label + '</a>')
.appendTo( ul );
};
Run Code Online (Sandbox Code Playgroud)
以下是一些可能有用的示例:
没有a在生成的标记中包含标记的示例_renderItem(select在这里像你的问题一样打破):http://jsfiddle.net/MaLqe/
实施例与一个a在所生成的标记标签:http://jsfiddle.net/3zSMG/
| 归档时间: |
|
| 查看次数: |
6944 次 |
| 最近记录: |