É possível capturar keydown globalmente em entradas de texto adicionadas dinamicamente?
Estou usando o seguinte jQuery global para mostrar e ocultar um carregamentodiv
para$.ajax
chamadas:
$(document).ajaxStart(function(){
$("#loading").show();
}
$(document).ajaxStop(function(){
$("#loading").hide();
}
Isso funciona bem, mas eu não quero mostrar o carregamento de div para autocompletes, então eu adicionei isso:
$("input[type=text]").keydown(function(){
if($(this).hasClass('ui-autocomplete-input')) {
window.suppressGlobal = true;
}
});
Então, para redefinirsuppressGlobal
para "normal"$.ajax
chama isso:
var origAjax = $.ajax;
$.ajax = function() {
if (window.suppressGlobal) {
arguments[0].global = false;
}
origAjax.apply(this, arguments);
window.suppressGlobal = false;
};
Isso tudo funciona bem para entradas de texto que são construídas com o carregamento da página. No entanto, tenho várias situações em que as entradas de texto são inseridas dinamicamente no lado do cliente usando jQuery / Javascript, nesse casoakeydown
evento não se limita à função global. Eu também tenteion
:
$("input[type=text]").on('keydown', function(){
if($(this).hasClass('ui-autocomplete-input')) {
window.suppressGlobal = true;
}
});
Mas isso não funciona também. Existe uma maneira que eu possa capturar globalmente okeydown
evento, independentemente de quando a entrada de texto foi adicionada? Eu poderia de alguma forma capturar globalmente a adição de entradas de texto para o DOM e anexar o manipulador de eventos, então?