簡體   English   中英

是否可以全局捕獲動態添加的文本輸入上的按鍵按下?

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM