Когда вы привязываете обработчик событий к элементам .remove
, новые элементы еще не существуют (очевидно). Вот почему jQuery не может найти их и связать обработчик событий.
Вы можете решить эту проблему, используя .live
[документы] или .delegate
[документы]
$(".remove").live('click', function(){
$(this).parent().remove();
});
Эти методы связывают обработчик событий с корнем документа и проверяют каждое событие click
(в данном случае) и проверяют, соответствует ли цель селектору. Если это так, обработчик выполняется.
Я бы также посоветовал вам не смешивать простые DOM-операции и jQuery. Ваш обработчик событий click
может быть записан более кратко:
$("#click").click(function(){
$('<p />', {'class': 'input'})
.append($('<input />', {type: 'text'})
.append($('<a />', {'class': 'remove', href: '#', text: 'Remove'})
.appendTo('#options');
});
Существуют исключения, такие как доступ к свойствам элементов DOM, но здесь вы действительно должны использовать jQuery.