Ist es möglich, Tastendrücke global bei dynamisch hinzugefügten Texteingaben zu erfassen?

Ich verwende die folgende globale jQuery, um eine Ladung anzuzeigen und zu verbergendiv zum$.ajax Anrufe:

$(document).ajaxStart(function(){
    $("#loading").show();
}
$(document).ajaxStop(function(){
    $("#loading").hide();
}

Dies funktioniert einwandfrei, aber ich möchte das Lade-Div für Autovervollständigungen nicht anzeigen. Deshalb habe ich Folgendes hinzugefügt:

$("input[type=text]").keydown(function(){
    if($(this).hasClass('ui-autocomplete-input')) {
        window.suppressGlobal = true;
    }
});

Dann zurücksetzensuppressGlobal für "normal"$.ajax ruft auf, dies:

var origAjax = $.ajax;
$.ajax = function() {
    if (window.suppressGlobal) {
        arguments[0].global = false;
    }
    origAjax.apply(this, arguments);
    window.suppressGlobal = false;
};

Dies alles funktioniert gut für Texteingaben, die mit Seitenladevorgängen erstellt wurden. Ich habe jedoch mehrere Situationen, in denen Texteingaben mithilfe von jQuery / Javascript dynamisch auf der Clientseite eingefügt werden. In diesem Falldaskeydown Ereignis wird nicht an die globale Funktion gebunden. Ich habe es auch versuchton:

$("input[type=text]").on('keydown', function(){
    if($(this).hasClass('ui-autocomplete-input')) {
        window.suppressGlobal = true;
    }
});

Aber das geht auch nicht. Gibt es eine Möglichkeit, die ich global erfassen kann?keydown Ereignis unabhängig davon, wann die Texteingabe hinzugefügt wurde? Könnte ich irgendwie das Hinzufügen von Texteingaben zum DOM global erfassen und dann den Ereignishandler anfügen?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage