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;
});
È stato utile?

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");
});

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top