【发布时间】:2014-01-04 00:36:17
【问题描述】:
我正在使用以下全局 jQuery 来显示和隐藏加载 div 以进行 $.ajax 调用:
$(document).ajaxStart(function(){
$("#loading").show();
}
$(document).ajaxStop(function(){
$("#loading").hide();
}
这很好用,但我不想显示自动完成的加载 div,所以我添加了这个:
$("input[type=text]").keydown(function(){
if($(this).hasClass('ui-autocomplete-input')) {
window.suppressGlobal = true;
}
});
然后,为“正常”$.ajax 调用重置 suppressGlobal,这样:
var origAjax = $.ajax;
$.ajax = function() {
if (window.suppressGlobal) {
arguments[0].global = false;
}
origAjax.apply(this, arguments);
window.suppressGlobal = false;
};
这一切都适用于通过页面加载构建的文本输入。但是,我有几种情况是使用 jQuery/Javascript 在客户端动态插入文本输入,在这种情况下 keydown 事件不会绑定到全局函数。我也试过on:
$("input[type=text]").on('keydown', function(){
if($(this).hasClass('ui-autocomplete-input')) {
window.suppressGlobal = true;
}
});
但这也不起作用。无论何时添加文本输入,有没有一种方法可以全局捕获 keydown 事件?我能否以某种方式全局捕获向 DOM 添加的文本输入并附加事件处理程序?
【问题讨论】:
-
您是否尝试过组合一些事件句柄,例如:$("input[type=text]").on('keydown change blur', function(){});
标签: javascript jquery ajax autocomplete jquery-ui-autocomplete