Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Помогите отловить собыие клика на любом участке сайта кроме заданного блока (https://javascript.ru/forum/jquery/24565-pomogite-otlovit-sobyie-klika-na-lyubom-uchastke-sajjta-krome-zadannogo-bloka.html)

Emil 06.01.2012 07:46

Помогите отловить собыие клика на любом участке сайта кроме заданного блока
 
например есть блок
<div class="click">Хайдук</div>
нужно отловить событие по любому участку сайта кроме данного блока,

такое реализовано например на фейсбуке в уведомлениях рядом с логотипом с фейсом.

DjDiablo 06.01.2012 12:31

способ 1)
// включаем обработчик в разрешённой зоне
$("#haiduk").mouseout(function(){
      $("body").on("click",onClick);
});
// выключаем обработчик в запрещённой зоне
$("#haiduk").mouseover(function(){
      $("body").off("click",onClick);
})

// обработчик
function onClick(){
     alert ("Не кликай, кликуном станешь");
}

способ 2) (самый надёжный)
получаем координаты запрещённой области метод $("#haiduk").offset()
при щелчке мыши смотрим не находиться ли курсор в запрещённой зоне
если не находиться то всё окей, делаем чего нибудь полезное
Если находиться, неделаем нечего

naxel 10.11.2012 17:40

Цитата:

Сообщение от Emil (Сообщение 148295)
например есть блок
<div class="click">Хайдук</div>
нужно отловить событие по любому участку сайта кроме данного блока,

такое реализовано например на фейсбуке в уведомлениях рядом с логотипом с фейсом.

$(document).on("click", function () {
    console.log('click!');
});

$('.click').on("click", function (e) {
    if (e.stopPropagation) {
        e.stopPropagation()
    } else {
        e.cancelBubble = true
    }
});


Часовой пояс GMT +3, время: 11:29.