Frage

Mein Skript unten generiert eine URL, wenn die Antwort $ .post () einen Fehler aufweist.Ich versuche, .on () zu verwenden, damit ich der generierten URL eine Funktion hinzufügen kann, aber es funktioniert nicht.Wenn ich die URL im DOM hinzufüge (ohne $ .post), funktioniert sie wie ein Zauber, sie möchte einfach nicht funktionieren, wenn die URL in $ .post () generiert wird.Irgendwelche Ideen oder Lösungen, wie ich es zum Laufen bringen kann?

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

War es hilfreich?

Lösung

$('.test') in Ihrem Code, sucht nach allen Elementen mit einer Klasse namens "test" in Ihrem DOM und fügt ihnen einen Klick-Listener hinzu.Dies wirkt sich nur auf die Elemente aus, die gefunden werden können, wenn der Aufruf von .on ausgeführt wird (d. H. Nicht , wenn der eigentliche Klick erfolgt).

Wenn Sie nach dem Aufruf von .on Elemente mit der Testklasse hinzufügen, müssen Sie .on für ein Element aufrufen, das das übergeordnete Element aller .test-Elemente ist und dies niemals sein wirdzerstört:

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

Wählen Sie für eine optimale Leistung das nächstmögliche übergeordnete Element aus, sodass ein kleinerer Teil des DOM nach geeigneten Elementen durchsucht werden muss.Die Verwendung von document ist hier nicht unbedingt ideal, aber es ist die nächste, die ich annehmen kann, ohne Ihr DOM zu kennen.

Andere Tipps

Vielleicht möchten Sie etwas wie:


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

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top