.parent(). remove()

У меня есть форма, основанная на jQuery, где вы можете добавить дополнительных пользователей в приложение. Я клонирую первый набор полей и добавляю его в конец до максимум 3 дополнительных людей. Когда вы добавили 1 дополнительного человека, у вас есть возможность удалить этого человека.

Однако моя кнопка удаления не работает. Раньше, пока я не добавил дополнительные функции к клонированию, чтобы изменить идентификаторы других элементов в наборе полей.

Я использую:

$(".remove").click(function() {
    $(this).parent().remove();

который работал изначально, но теперь это не так, и я не могу понять, почему.

Я вынул строки, которые останавливают первый "удалить этого человека", чтобы показать, что первый работает, а остальные нет. (Я буду позиционировать первую сцену со сцены, когда она будет исправлена)

Наверное, легче увидеть его, поэтому я поставил его здесь http://bit.ly/kHcAbe

По сути, любые идеи, почему мой "удалить этого человека" не работает над всем, кроме первого раздела?

Ответы

Ответ 1

Try:

$(document).on('click', '.remove', function() {
    $(this).parent().remove();
});

События привязаны к загрузке страницы, поэтому новый элемент не является.

Ответ 2

Вызов функции "live" устарел и больше не работает. Вы можете найти инструкции о том, как переписать функции, используя метод замены on() здесь, и более подробную информацию об этом:

http://api.jquery.com/live/

Чтобы обрабатывать все текущие и вновь созданные элементы, вы должны теперь использовать:

$(document).on("click", ".remove", function() {
    $(this).parent().remove();
});

jQuery выполняется на объекте документа, а не на элементе, и есть дополнительный параметр, чтобы указать, какие элементы смотреть и добавлять прослушиватели событий.

Ответ 3

Убедитесь, что вы закрыли выражение:

$(".remove").click(function() {
    $(this).parent().remove();
});

Ответ 4

Элементы изначально не существуют, что означает, что вам нужно использовать .live() или .delegate()

Например, измените:

используйте $(".remove").click(...) вместо $(".remove").live("click", ...) this

Ответ 5

Вы можете сделать это для удаления родителя:

 $(document).on("click", ".remove", function() { 
      $(this).parent().remove(); 
 });

или вы можете сделать это для удаления всех родителей:

 $(document).on("click", ".remove", function() { 
      $(this).parents().remove();
 });