У меня есть DIVсобытие делегации Просто нажмите кнопку не работает
<div class="myDiv">
<a href="#" class="myLink">somelink</a>
<div class="anotherDiv">somediv</div>
</div>
Теперь, используя делегирование событий и понятие пропускании я хотел бы перехватывать щелчки любого из myDiv, MyLink и anotherDiv.
Согласно передовой практике это может быть сделано путем прослушивания кликов по всему миру (отсюда термин «делегация») на самом документе
$(document).click(function(e) {
var $eventElem = $(e.target);
var bStopDefaultClickAction = false;
if ($eventElem.is('.myDiv'))
{
alert('Never alerts when clicking on myLink or anotherDiv, why????');
bStopDefaultClickAction = true;
}
return bStopDefaultClickAction;
});
Смотрите мое предупреждение вопрос выше. У меня создалось впечатление, что клики пузырьков. И это несколько потому, что документ фактически получает мой клик и начинает делегировать. Но механизм пузырьков для кликов на myLink и anotherDiv, похоже, не работает, так как оператор if не вступает.
Или это выглядит так: щелчок только пузырька на один шаг, от щелкнутого элемента src до назначенный объект делегирования (в данном случае документ)? Если это так, то мне нужно обрабатывать делегацию так:
$('.myDiv').click(function(e) {
//...as before
});
Но этот вид defeates с целью делегирования как я теперь должен иметь много обработчиков «myDiv» и, возможно, других ... он мертв легко просто иметь один объект делегирования событий документа.
Кто-нибудь знает, как это работает?
Я считаю, что вы должны сделать 'вар $ eventElem = $ (e.target)' в порядке для проверки ниже, чтобы работать. –
Не часть проблемы на самом деле, поскольку я написал это из памяти, но теперь я ее отредактировал. – Tommy
Я думаю, что ваше понимание немного выключено. Я думаю, вы считаете, что он должен вызывать щелчок для каждого элемента. Вы будете получать только один клик на каждом уровне иерархии в dom. Попробуйте добавить обработчик click для mydiv div. Вы увидите, что событие запускалось сначала, а затем обработчик щелчка документа, но цель всегда одна и та же. – redsquare