2016-03-25 9 views
0

Ich schrieb Funktion beim Klicken auf einen Klassennamen. und es funktioniert gut. Aber wenn ich ein Tag mit demselben Klassennamen angehängt habe, arbeitet die Funktion nicht an dieser Klasse.funktion funktioniert nicht an append string

<script> 
    $(document).ready(function() { 

     $("#btn1").click(function(){ 
      $("p").append(" <b class='test'>Appended text</b>."); 
     }); 

     $(".test").click(function(){ 
      alert(12); 
     }); 

    }); 
</script> 

<p>This is a paragraph.</p> 
<p>This is another paragraph.</p> 

<ol> 
    <li class="test">List item 1</li> 
</ol> 

<button id="btn1">Append text</button> 
+0

Lesen Sie mehr über [ 'Ereignis delegation'] (https://learn.jquery.com/events/event-delegation/) – Rayon

+0

https://jsfiddle.net/rayon_1990/ dLgetr0w/ – Rayon

+0

Endgültige Lösung ist hier: https://jsfiddle.net/dLgetr0w/1/ –

Antwort

0

Das ist, weil jQuery das Ereignis zum Zeitpunkt bindet Sie $(".test").click(...) nennen. Sie müssen sie separat binden:

$("#btn1").click(function(){ 
    $("p").append(" <b class='test'>Appended text</b>.") 
      .click(function(){alert(12);}); 
}); 
+0

Es wird zweimal "12" alarmieren, während Sie auf "Listenelement 1" klicken. – Neethu

+0

Korrigiert. Aber ich würde mit den Lösungen in den doppelten Fragen gehen. –