Я пытаюсь понять эту конкретную разницу между прямыми и делегированных обработчиков событий с помощью JQuery .он () метод . В частности, последнее предложение в этом пункте:
Когда
selector
предоставляется a , обработчик события называется делегированным . Обработчик вызывается не тогда, когда событие происходит непосредственно в связанном элементе, а только для потомков (внутренних элементов), которые соответствуют селектору. jQuery переносит событие от цели события до элемента, к которому прикреплен обработчик (т. е. от самого внутреннего к внешнему элементу), и запускает обработчик для любых элементов на этом пути, соответствующих селектору.
Что означает «запускает обработчик для любых элементов»? Я сделал тестовую страницу, чтобы поэкспериментировать с концепцией. Но обе следующие конструкции ведут к одинаковому поведению:
$("div#target span.green").on("click", function() {
alert($(this).attr("class") + " is clicked");
});
или,
$("div#target").on("click", "span.green", function() {
alert($(this).attr("class") + " is clicked");
});
Может быть, кто-то мог бы обратиться к другому примеру, чтобы прояснить этот момент? Спасибо.