Ответ 1
Try:
$(document).on('click', '.remove', function() {
$(this).parent().remove();
});
События привязаны к загрузке страницы, поэтому новый элемент не является.
У меня есть форма, основанная на jQuery, где вы можете добавить дополнительных пользователей в приложение. Я клонирую первый набор полей и добавляю его в конец до максимум 3 дополнительных людей. Когда вы добавили 1 дополнительного человека, у вас есть возможность удалить этого человека.
Однако моя кнопка удаления не работает. Раньше, пока я не добавил дополнительные функции к клонированию, чтобы изменить идентификаторы других элементов в наборе полей.
Я использую:
$(".remove").click(function() {
$(this).parent().remove();
который работал изначально, но теперь это не так, и я не могу понять, почему.
Я вынул строки, которые останавливают первый "удалить этого человека", чтобы показать, что первый работает, а остальные нет. (Я буду позиционировать первую сцену со сцены, когда она будет исправлена)
Наверное, легче увидеть его, поэтому я поставил его здесь http://bit.ly/kHcAbe
По сути, любые идеи, почему мой "удалить этого человека" не работает над всем, кроме первого раздела?
Try:
$(document).on('click', '.remove', function() {
$(this).parent().remove();
});
События привязаны к загрузке страницы, поэтому новый элемент не является.
Вызов функции "live" устарел и больше не работает. Вы можете найти инструкции о том, как переписать функции, используя метод замены on() здесь, и более подробную информацию об этом:
Чтобы обрабатывать все текущие и вновь созданные элементы, вы должны теперь использовать:
$(document).on("click", ".remove", function() {
$(this).parent().remove();
});
jQuery выполняется на объекте документа, а не на элементе, и есть дополнительный параметр, чтобы указать, какие элементы смотреть и добавлять прослушиватели событий.
Убедитесь, что вы закрыли выражение:
$(".remove").click(function() {
$(this).parent().remove();
});
Элементы изначально не существуют, что означает, что вам нужно использовать .live()
или .delegate()
Например, измените:
используйте $(".remove").click(...)
вместо $(".remove").live("click", ...)
this
Вы можете сделать это для удаления родителя:
$(document).on("click", ".remove", function() {
$(this).parent().remove();
});
или вы можете сделать это для удаления всех родителей:
$(document).on("click", ".remove", function() {
$(this).parents().remove();
});