Я пытаюсь понять эту конкретную разницу между прямыми и делегированными обработчиками событий, используя метод jQuery.on(). В частности, последнее предложение в этом параграфе:
Когда предоставляется
selector
, обработчик события называется делегированным. Обработчик не вызывается, когда событие происходит непосредственно на связанном элементе, но только для потомков (внутренних элементов), соответствующих селектору. 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");
});
Может быть, кто-то может обратиться к другому примеру, чтобы прояснить этот момент? Спасибо.