2017-01-12 2 views
1

HTMLauf ('Klick', function() funktioniert nicht auf neue Inhalte

<div id='story'>  
    <div class='item folder'>sky</div> 
    <div class='item folder'>sea</div> 
</div> 

JS

$(".item").on('click', function(){ 
    $('.marked').removeClass('marked'); 
    $(this).addClass('marked'); 
}); 

Das funktioniert aber jetzt ist der der Gehalt an #story ersetzt mit Ajax-Verfahren:

...  
success: function(data) { 
    $('#story').html(data); 
} 

Und der neue Inhalt ist:

<div class='item folder'>earth</div> 
<div class='item folder'>venus</div> 

Und hier on('click', function() funktioniert nicht. Klassen werden nicht entfernt/hinzugefügt.

Antwort

3

Event delegation funktioniert der Trick:

$('body').on('click', '.item', function(){ 
    $('.marked').removeClass('marked'); 
    $(this).addClass('marked'); 
}); 
+0

Vielen Dank. Gelöst. – bonaca

0

Klicken Sie arbeiten nur für HTML-Elemente zu binden, die in der DOM zu dem Zeitpunkt verfügbar sind click genannt wird. Sie müssen einen neuen Klicklistener binden, nachdem Sie dem DOM etwas hinzugefügt haben.

2

Verwenden Ereignis Delegation für dinamically hinzugefügt Elemente:

$(document).on('click', '.item', function(){ 
    $('.marked').removeClass('marked'); 
    $(this).addClass('marked'); 
}); 

können Sie mehr lesen here.

Verwandte Themen