Скрыть #test, если щелкнуть что-либо еще, кроме #test или его дочерних элементов? - PullRequest
2 голосов
/ 15 сентября 2010

Название подводит итог.

Я просто хочу скрыть #test, если щелкнуть что-либо кроме #test или его дочерних элементов.

Ответы [ 2 ]

8 голосов
/ 15 сентября 2010

Вы можете использовать всплывающее сообщение в ваших интересах, например:

$("#test").click(function(e) {
  e.stopPropagation();
});
$(document).click(function() {
  $("#test").hide();
});

Если клик поступил с в пределах #test, он прекращает пузыриться с помощью event.stopPropagation(), если он поступил откуда-либо еще, click будет (по умолчанию) пузырить все путь до document, который имеет обработчик .click() для сокрытия #test.

0 голосов
/ 15 сентября 2010

Может быть что-то вроде:

// http://api.jquery.com/delegate/
// http://api.jquery.com/not-selector/

$("body").delegate("*:not(#test)", "click", function () {
    $("#test").hide(); // But would be better to cache $("#test") !
});
...