Я намагаюся зрозуміти цю особливу різницю між прямими та делегованими обробниками подій, використовуючи метод 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");
});
Може, хтось міг би звернутися до іншого прикладу, щоб уточнити цей момент? Дякую.