Ich erstelle DOM-Elemente und erstelle dann ein Array von JQuery-Objekten mit diesen DOM-Elementen. Nach dem Sortieren der JQuery-Objekte und dem erneuten Anhängen dieser Objekte ist der Klickereignis-Listener verschwunden. Gibt es eine Möglichkeit, den Klick-Listener zu erhalten?Wie behalte ich Ereignislistener nach dem Sortieren?
for(var i=0; i<5; i++){
var div = $('<div>',{
id: i+"div",
class: 'list-item '+i,
html: "Item #"+i
});
div.data('i',i);
$('.news-layout-1').append(div);
div.on('click',function(){
alert($(this).data('i'));
});
}
$('.button').on('click',function(){
var items = [];
$('.news-layout-1').find('.list-item').each(function(index, item){
items.push(item);
});
items = items.sort(function(a,b){
var textA = $(a).html().toUpperCase();
var textB = $(b).html().toUpperCase();
return (textA > textB) ? -1 : (textA < textB) ? 1 : 0;
});
$('.news-layout-1').html('');
for(var i=0; i<items.length; i++){
$('.news-layout-1').append(items[i]);
}
});
http://jsfiddle.net/bhav4co6/5/
Verwenden Sie Stack Snippets (die '<>' Symbolleistenschaltfläche), um runnable Demos ** hier ** vor Ort zu platzieren. Ihre Frage sollte in sich geschlossen sein, einschließlich Ihres HTML, das gerade verlinkt ist. Snippets vermeiden dies. –
Sie können versuchen, die Listener an den '$ ('body') zu delegieren. ('Click', 'button,' ...)' siehe: http://api.jquery.com/delegate/ – ochi
statt $ ('. button'). on ('click', function() {benutze $ (document) .on ('click', '. button', function() { – Araz