Czy możliwe jest przechwytywanie keydown na całym świecie na dynamicznie dodawanych wejściach tekstowych?

Używam następującego globalnego jQuery, aby pokazać i ukryć ładowaniediv dla$.ajax połączenia:

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

Działa to dobrze, ale nie chcę pokazywać ładowania div dla autouzupełnień, więc dodałem to:

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

Następnie, aby zresetowaćsuppressGlobal dla „normalnego”$.ajax połączenia, to:

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

To wszystko działa dobrze dla wejść tekstowych, które są zbudowane z ładowaniem stron. Mam jednak kilka sytuacji, w których dane tekstowe są wstawiane dynamicznie po stronie klienta za pomocą jQuery / Javascript, w którym to przypadkukeydown zdarzenie nie jest powiązane z funkcją globalną. Próbowałem teżon:

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

Ale to też nie działa. Czy istnieje sposób na globalne uchwyceniekeydown zdarzenie niezależnie od tego, kiedy dodano tekst? Czy mogę jakoś globalnie uchwycić dodawanie danych tekstowych do DOM i dołączyć wtedy obsługę zdarzeń?

questionAnswers(1)

yourAnswerToTheQuestion