我正在使用 jquery 1.4.4 和 jquery-ui 1.8.24。我有一个对话框,在该对话框内有一个链接。单击该链接后,我向用户显示带有自动完成功能的输入。当用户从自动完成列表中选择一个项目并按回车键时,一切正常。不幸的是,当用户手动单击自动完成列表中的项目时,根本不会调用事件“选择”并且对话框会立即自行关闭。
另外,我使用了很多 live() 和 die() 来防止将多个事件绑定到我的 DOM 元素。
$j("#" + id + "_selector:not(.ui-autocomplete-input)").die().live("focus", function (event) {
$j(this).autocomplete({
autoFocus:true,
html:true,
create:function() {
// this always invokes
console.log('autocomplete created');
},
source:function (request, response) {
var term = request.term;
if (term in cache) {
response(cache[term]);
return;
}
request.kind = settings.kind
request.no_email_display = settings.no_email_display
lastXhr = $j.getJSON(Routes.search_account_path().url, request, function (data, status, xhr) {
cache[ term ] = data;
if (xhr === lastXhr) {
response(data);
}
});
return false;
},
select: function(event, ui) {
// this one works only after selecting by keyboard and hitting entery key
var origEvent = event;
while (origEvent.originalEvent !== undefined)
origEvent = origEvent.originalEvent;
console.log(origEvent);
},
});
});
我怀疑是对话框以某种方式从我的自动完成中接管了点击事件。
如果有人能帮助我至少调试这个错误(工具?如何设置萤火虫、断点等?),我会很高兴,因为我意识到这个错误可能几乎不可能重现。