Перший приклад демонструє делегування подій . Обробник подій прив'язаний до елемента вище дерева DOM (в даному випадку - document
) і буде виконаний, коли подія досягне цього елемента, що виник у елементі, що відповідає селектору.
Це можливо, оскільки більшість подій DOM пускають дерево з місця початку. Якщо клацнути на #id
елементі, генерується подія кліку, яка буде проникати через усі елементи-предки ( примітка до сторони: перед цим насправді є фаза, яка називається `` фаза захоплення '', коли подія спускається по дереву до ціль ). Ви можете зафіксувати подію на будь-якому з цих предків.
Другий приклад прив’язує обробник події безпосередньо до елемента. Подія все одно буде міхуром (якщо ви не запобігнете цьому в обробнику), але оскільки обробник прив'язаний до цілі, ви не побачите наслідків цього процесу.
Делегуючи обробник події, ви можете переконатися, що він виконується для елементів, які не існували в DOM на момент прив'язки. Якби ваш #id
елемент був створений за вашим другим прикладом, ваш обробник ніколи б не виконав. Прив’язуючи до елемента, який, як ви знаєте, точно знаходиться в DOM на момент виконання, ви гарантуєте, що ваш обробник насправді буде приєднаний до чогось і може бути виконаний за необхідності пізніше.