Как сделать функцию для реагирования на нажатие всюду, кроме элемента?

Рейтинг: 0Ответов: 2Опубликовано: 12.11.2014

Есть страничка, и на ней кнопка. Если нажать на кнопку, то открывается окно подсказки. А если нажать в любое другое место на страничке, кроме этой кнопки и окна подсказки, то подсказка должна закрыться. Как это сделать? Открыть - нет проблем, а вот как задать функцию для закрытия?

Ответы

▲ 1

В событие обычно передается информация о событии (event), из него можно достать информацию о том, на что пользователь кликнул.

$(document).click(function(event){
    if(event.target != someElement) {
        closeWindow();
    } 
});

Правда, тут надо еще учесть, что клик на вложенные в подсказку элементы тоже могут привести к закрытию.

▲ 1

Схематично:

$(document).on('click', function(event) {
    if ($(event.target).closest('.popup').length ||
        $(event.target).closest('.button').length) return;

    popup.hide();

    event.stopPropagation();
});