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