Вот как вы хотите использовать on
$(document).on("click", ".deleteDog", function(e) {
e.preventDefault();
$(this).parent().remove();
});
В идеале все эти deleteDog
кнопки будут размещены в каком-то контейнере.Если бы все эти кнопки были в элементе div с идентификатором foo
, вы бы более эффективно настраивали события следующим образом:
$("#foo").on("click", ".deleteDog", function(e) {
e.preventDefault();
$(this).parent().remove();
});
Теперь вместо каждого щелчка в любом месте документапроверено, только те клики, которые всплывают до #foo
.
Я предполагаю, что вы изначально пытались использовать on
так:
$(".deleteDog").on("click", function(e) {
e.preventDefault();
$(this).parent().remove();
});
Это функциональноидентично высказыванию:
$(".deleteDog").bind("click", function(e) {
e.preventDefault();
$(this).parent().remove();
});
Пропуск параметра селектора, подобного этому, создает событие с прямой привязкой - только те элементы, которые соответствуют селектору .deleteDog
в то время, когда вызывается on
будет проводным
Применение селектора, как в моем исходном коде, делает его делегированным событием - jQuery будет прослушивать все клики, а если они происходят от элемента с классом deleteDog
,функция сработает.