[英]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.