除了#test或其子项被点击之外,还要隐藏#test吗?

时间:2010-09-15 14:47:41

标签: jquery-selectors click hide jquery

标题总结了它。

我只想隐藏#test,而不是#test或其子项被点击。

2 个答案:

答案 0 :(得分:8)

您可以在此处使用event bubbling,例如:

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

如果点击来自 #test内的,则会停止通过event.stopPropagation()冒泡,如果它来自click将会(默认情况下)冒泡的任何地方一直到document,其.click()处理程序隐藏#test

答案 1 :(得分:0)

可能是这样的:

// 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") !
});