ybdt1201
ybdt1201
2016-07-11 13:09
采纳率: 85.1%
浏览 1.5k
已采纳

求助大虾,关于jq点击空白隐藏div的问题

<!DOCTYPE html >
<html >
<head>
    <meta charset="UTF-8">
    <title>点击空白处关闭弹出窗口</title>
    <style type="text/css">
        .pop{width:200px;height:130px;background:#080;}
    </style>
     <script src="http://cdn.bootcss.com/jquery/1.11.1/jquery.min.js"></script>
    <script type="text/javascript">
        $(function(){
            $('#btn').click(function() {
                $('#pop').show("slow");//open dialog
            });
            $(document).bind("click",function(e){
                var target  = $(e.target);//表示当前对象,切记,如果没有e这个参数,即表示整个BODY对象
                console.info(target.closest(".pop").length)
                console.info(target.closest("#btn").length)
                if(target.closest(".pop").length == 0 && target.closest("#btn") ==0){
                        $("#pop").hide();
                }
            })
        })
    </script>
</head>
<body>
<button id="btn">打开div</button>
<div id="pop" class="pop" style="display: none"></div>
</body>
</html>

上面是完整的代码,主要想实现,点击按钮显示div,然后点击除按钮和div外的空白,隐藏div,
目前的问题是,可以打开div,但是不能隐藏div,请大虾帮忙看下代码是哪里出问题了;
主要的困惑是target.closest(".pop").length==0为true,target.closest("#btn").length==0为true;为什么target.closest(".pop").length == 0 && target.closest("#btn") ==0就为false了

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • ybdt1201
    ybdt1201 2016-07-11 13:56
    已采纳

    if((target.closest(".pop").length == 0) && (target.closest("#btn").length ==0)){
    $("#pop").hide();

    点赞 评论
  • ybdt1201
    ybdt1201 2016-07-11 13:55

    /*目测问题应该出在&&这里,
    target.closest(".pop").length == 0 && target.closest("#btn") ==0可以理解为
    target.closest(".pop").length == 0与target.closest("#btn") ==0两个整体;
    也可以理解为target.closest(".pop").length == 0 && target.closest("#btn")是否等于0这一个整体
    所以将二者分开写,就没有问题了
    /
    /
    if(target.closest(".pop").length == 0 && target.closest("#btn") ==0){
    $("#pop").hide();
    }*/

    点赞 评论

相关推荐