Определение куда пошел клик при событии на body
Привет.
По клику на кнопку возле нее появляется маленькое окошко. Как сделать так, чтобы по клику на любую часть на сайте(кроме окна) пряталось окно? Может как-то повесить событие на body и ловить клик? Реализация желательно на jquery, если это возможно. Спасибо. |
обычно при появлении такого окошка клик вешается на документ, и в функции проверяется event.target и его паренты, если один из парентов - окно, то не будем его скрывать.
другой вариант - повесить клик ещё и на окно, в нем сделать stopPropagation(), чтобы до документа событие не дошло, а в обработчике клика документа просто скрывать окно. ну и при скрытии окна обработчик с документа убирается. |
Примерно так:
$(document).on('click', function(e) { if(e.target.className != 'класс окошка') { //... } }); |
Цитата:
|
Яростный Меч, это да.
Есть ещё такая идея: $('body *').click(function() { if(!$(this).parents('класс окошка').length) { //... } }); Но лучше так делать не стоит, так как при клике на любой элемент будет срабатывать этот код. |
О, спасибо большое!
|
Самый нормальный вариант:
.display { display: none; height: 100%; left: 0%; top: 0%; position: fixed; width: 100%; z-index: 1; } <div class="display"></div> var display; $(function() { display = $('.display'); display.click(function() { this.style.display = 'none'; }); }); function winOpen() { /*Тут код для открытия окна*/ display.css('display', 'block'); } function winClose() { /*Тут код для закрытия окна*/ display.css('display', 'none'); } |
Цитата:
|
Часовой пояс GMT +3, время: 20:44. |