jQuery按钮.show()单击任何内容.hide()

时间:2010-08-01 14:53:02

标签: jquery

我有一个div,当你点击它时,使用toggle()并显示并隐藏按钮下方的列表div。我想要它,以便当你点击页面上的任何地方(而不是在那个div *)时它会关闭。我意识到这不适用于切换。有人可以指出我正确的方向。

我想点击一个按钮,而不是再次点击该按钮关闭我希望能够在任何地方点击并关闭的div。

3 个答案:

答案 0 :(得分:5)

您可以阻止click事件冒泡,如下所示:

$("#divID, #buttonID").click(function(e) {
  e.stopPropagation();
});
$(document).click(function() {
  $("#divID").hide();
});

使用event.stopPropagation()点击“按钮”(似乎是另一个<div>?)或来自div的点击不会bubble up to document,其他地方 ...当click到达那里时,它将关闭<div>。因此,<div>外部的点击会关闭,内部点击不会发生任何事情。

答案 1 :(得分:1)

return false是你的朋友,它会阻止默认行为,否则单击按钮或div时会触发文档点击事件。

<!DOCTYPE html>
<html>
<head>
    <title></title>
    <script src="http://code.jquery.com/jquery-1.4.2.min.js" type="text/javascript"></script>
    <script type="text/javascript">
    $(function () {
        $("button").click(function () { $("div").toggle(); return false; });
        $(document).click(function () { $("div").hide(); });
        $("div").click(function () { return false; });
    });
    </script>
</head>
<body>
    <button>Toggle me!</button>
    <div style="height: 400px; width: 400px; background: red;"></div>
</body>

答案 2 :(得分:-1)

$("*").not("#specialDiv").click(function() {
     $('#specialDiv').hide();
})