jQuery单击元素事件

Nic*_*ard 44 javascript jquery click

我有一个浮动div显示,我希望它在用户点击div时隐藏.当悬停在元素上时,这类似于.hover()函数回调.只有我想点击才能这样做.

我尝试只为身体设置一个点击事件,这会隐藏div,但这会产生意想不到的结果.

任何人都有关于我如何轻松做到这一点的想法?

Dav*_*ett 86

如果要在单击页面中的其他位置时清除div,可以执行以下操作:

$('body').click(function(event) {
    if (!$(event.target).closest('#myDiv').length) {
        $('#myDiv').hide();
    };
});
Run Code Online (Sandbox Code Playgroud)

  • [.closest](http://api.jquery.com/closest/)方法返回一个jQuery对象.如果没有找到任何内容,则返回一个空的jQuery对象.[.length](http://api.jquery.com/length/)只是确定是否找到任何内容的好方法,因为0 == false和1 == true,而jQuery对象是"true"而不管是否空无一人. (5认同)

Phi*_*Fox 19

另一个可能更简单的选择是在浮动DIV和页面其余部分之间添加透明div.

透明DIV上的简单点击事件可以处理隐藏,它可以避免您遇到click事件时遇到的问题.

  • 这比DavidB的答案更简单吗? (4认同)
  • @PhillFox刚刚通过Google偶然发现了这一点并认为我会发表评论.PhillFox解决方案的优势在于透明div将阻止任何实际链接或按钮点击.有时如果显示浮动div,用户只需随意点击div即可使其消失.透明div可防止任何误点击,而DavidB的解决方案则不会. (4认同)

Kel*_*lly 11

如果你正在使用Jquery,你可以使用如下的选择器:

$("*:not(#myDiv)").live("click", function(){
    $("#myDiv").hide();
});
Run Code Online (Sandbox Code Playgroud)

  • 对不起 - 应该是以下内容:$("*:not(#myTrigger)").live("click",function(){$("#myDiv").hide();}); (2认同)

ann*_*ata 10

你肯定在寻找模糊事件吗?

  • 嗯,这根本不是真的* - http://www.quirksmode.org/dom/events/blurfocus.html (2认同)
  • 很高兴它对某人有用.缺乏涉及模糊的答案让我感到困惑. (2认同)

Sal*_*bas 9

最好的方法是: -

    
$(document).bind('click', function(e) {  

 var $clicked = $(e.target);

    if (!$clicked.parents().hasClass("divtohide")) {
        $(".divtohide").hide();
    }

});