[英]Is it possible to capture keydown globally on dynamically added text inputs?
我正在使用以下全局jQuery来显示和隐藏$.ajax
调用的加载div
:
$(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;
}
});
然后,重置suppressGlobal
为“正常” $.ajax
调用,这样的:
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的文本输入的附加内容,然后附加事件处理程序吗?
您将必须使用$(document).on()
来动态创建控件。
jsfiddle: http : //jsfiddle.net/G9qJE/
也可以使用: $('body').on
说明:分配事件后,该事件仅分配给页面上当前存在的元素。 如果稍后再讨论其他元素,那么没有什么值得关注的地方,这些元素也可以被使用。 这就是为什么您需要一些位于文档级别的东西,该东西可以了解事件以及您想要将其应用到的元素,以便它可以监视匹配的任何新元素并将该事件也应用于它们。
$(document).on("keydown", "input[type=text]", function() {
if($(this).hasClass('ui-autocomplete-input')) {
window.suppressGlobal = true;
}
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.