Для барботирования события как click
, обработчики на элементах получить первый шанс на мероприятии, и только тогда он пузырится через дерево DOM докам, таким как body
. Обработчики на элементах могут отменить, который пузырится по event.stopPropagation()
. Как правило, они будут, если они обрабатывают событие.
Вы не можете получить событие впереди обработчиков, страница прикрепляется сама по себе, по крайней мере, не в прямом направлении, потому что, даже если вы привязали своих обработчиков к фактическим элементам, они выполняются в том порядке, в котором они выполняются «Прикреплено, и поэтому ваши будут после других. Это нормально, если они не используют event.stopImmediatePropagation()
, что останавливает даже другие обработчики, прикрепленные к тому же самому элементу.
Пример помогает: Давайте посмотрим на этот HTML:
<body>
<div id="target">........</div>
</body>
и эти обработчики привязывайся в следующем порядке:
$("#target").click(function() {
console.log("First direct handler");
});
$("#target").click(function() {
console.log("Second direct handler");
});
$(document.body).click(function() {
console.log("'body' handler");
});
Если я нажимаю на div
, мы получим это в Консоль: Live Example | Live Source
First direct handler
Second direct handler
'body' handler
Теперь давайте изменим первый обработчик и оставить остальное то же самое:
$("#target").click(function(e) {
console.log("First direct handler");
e.stopPropagation();
});
Теперь щелчок дает нам это: Live Example | Live Source
First direct handler
Second direct handler
Обработчик на body
не был вызван, потому что первый проводник прекратил распространение.
Давайте изменим, что первый обработчик снова:
$("#target").click(function(e) {
console.log("First direct handler");
e.stopImmediatePropagation();
});
Теперь щелчок дает нам следующее: Live Example | Live Source
First direct handler
Мы даже не получили вызов на второй обработчик, потому что первый обработчик остановил немедленного распространения.
проблема может заключаться в том, что клиент предотвращает распространение события, в этом случае вам может быть не повезло –
элемент также определенно готов при применении прослушивателя событий? – iConnor