Я вижу по вашему коду, вы звоните $(".delete").click(function() {...});
только один раз. Когда вы используете селектор типа $(".delete")
, вы получаете коллекцию подходящих объектов. Если вы добавляете новый соответствующий объект, вы должны снова запустить $(".delete").click(function() {...});
, чтобы обновить коллекцию объекта, к которому вы привязываете событие click()
... или вы можете слушать всех остальных и использовать .live()
jQuery live ()
Этот метод является разновидностью
базовый метод .bind () для прикрепления
обработчики событий для элементов. когда
.bind () называется, элементы, которые
объект jQuery ссылается на
обработчик прилагается; элементы, которые получают
введено позже нет, поэтому они будут
потребовать еще один вызов .bind (). За
Например, рассмотрим HTML:
<body>
<div class="clickme">
Click here
</div>
</body>
Чтобы привязать простой обработчик кликов к этому
элемент:
$('.clickme').bind('click', function() {
// Bound handler called.
});
Когда элемент нажимается,
обработчик называется. Однако предположим,
что после этого другой элемент
добавлено:
$('body').append('<div class="clickme">Another target</div>');
Этот новый элемент также соответствует
селектор .clickme, но так как это было
добавлено после вызова .bind (),
клики по нему ничего не сделают.
Метод .live () обеспечивает
альтернатива этому поведению. Связывать
обработчик кликов для целевого элемента
используя этот метод:
$('.clickme').live('click', function() {
// Live handler called.
});
А потом добавить новый элемент:
$('body').append('<div class="clickme">Another target</div>');
Затем щелчок по новому элементу также вызовет обработчик.
Чтобы отсоединить обработчики кликов от всех, которые были связаны с помощью .live (), используйте метод .die ():
$('.clickme').die('click');