jQuery .on non riconosce gli URL da jQuery $ .post
-
28-10-2019 - |
Domanda
Il mio script seguente genera un URL se la risposta $ .post () ha un errore.Sto cercando di utilizzare .on () in modo da poter allegare una funzione all'URL generato, ma non funziona.Quando aggiungo l'URL nel DOM (senza $ .post) funziona come un fascino, semplicemente non vuole funzionare se l'URL viene generato all'interno di $ .post ().Qualche idea o soluzione su come farlo funzionare?
// 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;
});
Soluzione
$('.test')
nel codice, cerca tutti gli elementi con una classe denominata "test" nel DOM e aggiunge loro un listener di clic.Ciò interesserà solo gli elementi che possono essere trovati quando viene eseguita la chiamata a .on
(cioè non quando si verifica il clic effettivo).
Se stai aggiungendo elementi con la classe di test dopo la chiamata a .on
, dovrai chiamare .on
per un elemento che sarà il genitore di tutti i tuoi elementi .test
e che non sarà maidistrutto:
$(document).on('click', '.test', function() {
alert('test');
});
Per prestazioni ottimali, seleziona il genitore più vicino possibile, in modo che una parte più piccola del DOM debba essere cercata per elementi idonei.L'uso di document
qui non è necessariamente l'ideale, ma è il più vicino che posso supporre, senza conoscere il tuo DOM.
Altri suggerimenti
Potresti volere qualcosa del tipo:
$(".addDoctor").on("click", function(event){
alert("test");
});