Question

Mon script ci-dessous génère une URL si la réponse $ .post () a une erreur. J'essaie d'utiliser .on () afin que je puisse attacher une fonction à l'URL générée, mais cela ne fonctionne pas. Lorsque j'ajoute l'URL dans le DOM (sans le $ .post), cela fonctionne comme un charme, il ne veut tout simplement pas fonctionner si l'URL est générée dans $ .Post (). Des idées ou une solution sur la façon dont je peux le faire fonctionner?

// 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;
});
Était-ce utile?

La solution

$('.test') Dans votre code, recherche tous les éléments avec une classe nommée "test" dans votre DOM et ajoute un écouteur de clic. Cela n'affectera que les éléments qui peuvent être trouvés lors de l'appel à .on est exécuté (c'est-à-dire ne pas Lorsque le clic réel se produit).

Si vous ajoutez des éléments avec la classe de test après l'appel à .on, vous devrez appeler .on pour un élément qui sera le parent de tous vos .test éléments, et cela ne sera jamais détruit:

$(document).on('click', '.test', function() {
    alert('test');
});

Pour des performances optimales, sélectionnez le parent le plus proche possible, de sorte qu'une partie plus petite du DOM doit être recherchée pour les éléments éligibles. L'utilisation de document Voici nécessairement l'idéal, mais c'est le plus proche que je puisse supposer, sans connaître votre dom.

Autres conseils

Vous voudrez peut-être quelque chose comme:


$(".addDoctor").on("click", function(event){
    alert("test");
});

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top