jQuery .on não reconhece urls de jQuery $ .post
-
28-10-2019 - |
Pergunta
Meu script abaixo gera um url se a resposta $ .post () tiver um erro.Estou tentando usar .on () para poder anexar uma função ao URL gerado, mas não funciona.Quando eu adiciono o URL no DOM (sem o $ .post), funciona perfeitamente, só não quer funcionar se o url for gerado dentro de $ .post ().Alguma ideia ou solução sobre como posso fazer isso funcionar?
// Do the database check:
$.post("test.php",{searchFor : search},function(data) {
if(data.response == true) {
// DO SOME STUFF
} else if(data.response == false && data.error == "noDoc") {
$("#resultsTable").html("<tr><td colspan='6'><p><strong>No user found, <a href='#' class='addDoctor'>Click here</a> to add a doctor.</strong></p></tr>");
} else {
$("#resultsTable").html("<tr><td colspan='6'><p><strong>"+data.error+"</strong></p></tr>");
}
});
});
$(".addDoctor").on("click",function() {
alert("test");
return false;
});
Solução
$('.test')
em seu código, pesquisa todos os elementos com uma classe chamada "teste" em seu DOM e adiciona um ouvinte de clique a eles.Isso afetará apenas os elementos que podem ser encontrados quando a chamada para .on
está sendo executada (ou seja, não quando o clique real acontece).
Se você estiver adicionando elementos com a classe de teste após a chamada para .on
, você precisará chamar .on
para um elemento que será o pai de todos os seus elementos .test
, e que nunca serádestruído:
$(document).on('click', '.test', function() {
alert('test');
});
Para obter o desempenho ideal, selecione o pai mais próximo possível, de modo que uma parte menor do DOM tenha que ser pesquisada em busca de elementos elegíveis.O uso de document
aqui não é necessariamente ideal, mas é o mais próximo que posso supor, sem saber seu DOM.
Outras dicas
Você pode querer algo como:
$(".addDoctor").on("click", function(event){
alert("test");
});