Ich habe einfachen HTML-Markup:Wie speichern wir Event-Handler, wenn wir neues HTML für Element setzen?
<div id="cont">Some text here
<div class="wrap" style="border: 1px solid black;display: inline;"> block element here
</div> and another text</div>
Und jQuery-Code:
$(function(){
$(".wrap").click(function(){
$("#cont").html($("#cont").html().replace(/text/g, "letter"));
alert("Click!");
});
$("#d1").click(function(){
alert("#d1 clicked!");
});
});
Ich erwarte, dass Click-Ereignis jedes Mal, wenn Sie durch die #d1
div angeklickt werden, ausgelöst wird, aber wenn wir geklickt von .wrap Es ist wieder Feuer. Ich verstehe, warum es solches Verhalten hat, aber wie man es löst?
In meinem Code kann ich Click-Ereignis für #d1
nach $("#cont").html($("#cont").html().replace(/text/g, "letter"))
nicht festlegen, da ich jetzt nicht zur Ausführungszeit, wenn Ereignis festgelegt wurde.
Sie können versuchen, Beispiel auf JSBin
Vielen Dank für die Antworten, live() ist eine sehr nützliche Funktion.
Ist es möglich, .live() und .one() Ereignis-Setter zu kombinieren? Ich möchte Ereignishandler mit .live() festlegen, aber es muss nur einmal ausgelöst werden. – Kai
@Kai Nicht sicher, aber Sie könnten '$ (this) .die ('click')' 'am Ende der Handler-Funktion setzen. –
Ich finde nette Lösung von @Nick Craver hier - http://Stackoverflow.com/questions/3796207/using-one-with-live-jquery – Kai