Используйте jQuery, чтобы скрыть DIV при нажатии за его пределами, но разрешить распространение событий - PullRequest
2 голосов
/ 01 сентября 2011

Я прочитал много других вопросов, касающихся того, как закрыть div, когда вы щелкаете за его пределами, но у меня есть сложная проблема в том, что у меня есть другие элементы, связанные с .live ()

Что я хочу сделать, так это то, что если я щелкну где-нибудь еще на странице, div должен исчезнуть, в том числе, если я нажму на «живой» элемент.Когда я щелкаю по этому активному элементу, я хочу, чтобы его обработчик работал нормально.

Насколько я читал, основной способ обработки закрытия div - это прикрепить прослушиватель click к документу или $, ноэто предотвратит появление любого другого живого события выше упомянутого обработчика body / doc.Это можно обойти?

1 Ответ

1 голос
/ 18 декабря 2011

В прямом эфире события поднимаются вверх по лестнице от самого переднего к самому заднему в этом порядке.При щелчке вашего «живого» элемента (который является прямым / косвенным потомком объекта вашего тела), если вы не вернете false или не остановите распространение, он будет подниматься вверх по лестнице, достигая обработчика щелчков документа.Прикрепление щелчка документа в режиме реального времени не работает.

Проверьте пример реализации здесь: http://jsfiddle.net/VHtSP/6/

$('div.menu').live('click', function(e) {
    e.stopPropagation();
    alert('click inside menu. will not propagate.');
    return false;
});

$(document).click(function() {
    alert('document click() handler.');
    // close the div
    $('div.menu').hide();
});

$('a').live('click', function() {
    alert('<a> click() handler');
    // .. your code to handle the live element's click
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...