Я создаю элементы DOM, а затем создаю массив объектов JQuery с этими элементами DOM. После сортировки объектов JQuery и повторного добавления их, прослушиватель событий щелчка исчез. Есть ли способ сохранить прослушиватель кликов?Как сохранить прослушиватели событий после сортировки?
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/
Пожалуйста, используйте Stack Snippets (кнопка '<>' toolbar), чтобы поставить runnable demos ** здесь **, на месте. Ваш вопрос должен быть самодостаточным, включая ваш HTML, который в настоящее время только что связан. Фрагменты избегают этого. –
Вы можете попробовать делегировать слушателей '$ ('body'). On ('click', '.button,' ...)' см: http://api.jquery.com/delegate/ – ochi
вместо $ ('. button'). on ('click', function() {use $ (document) .on ('click', '. button', function() { – Araz