+ -
当前位置:首页 → 问答吧 → $(document).click()使用限制问题

$(document).click()使用限制问题

时间:2010-05-11

来源:互联网

我想做一个弹出的层,比如:<body><div class="box">内容</div></body>,.box显示之后在单击body时我想隐藏.box,则使用了$(document).click()
问题就是,.box也属于body里的一部分,所以当单击.box的时候也会隐藏它自己,我想当单击.box不要隐藏,所以有没有办法限制这种现象呢?
谢谢大家!

作者: zzmama   发布时间: 2010-05-11

我想到一个办法就是用一个变量来控制,只有当这个变量为true的时候$(document).click()才能成功,但是还想知道有没有别的办法

作者: zzmama   发布时间: 2010-05-11

<script type="text/javascript" src="jquery-1.4.2.min.js"></script>
<script type="text/javascript">
    $(function(){
        $(document).bind("click",function(e){
            var left = e.pageX;
            var top = e.pageY;
            var $box = $("#box");
            if(!(left >= $box.offset().left && left <= $box.offset().left + $box.width() && top >=$box.offset().top && top <= $box.height())){
                $box.hide();
            }
        })
    });
</script>

作者: 暮雨輕橒   发布时间: 2010-05-11

这个是我想到的苯方法
获取点击事件时鼠标的位置,并判断该位置是否在box之内 如果不在就hide

作者: 暮雨輕橒   发布时间: 2010-05-11

在单机.box的时候禁止事件冒泡就行了~

作者: jokeykiss   发布时间: 2010-05-11

额  lz说的不是冒泡的问题啊  他说的是单击其他位置的时候不隐藏box

冒泡貌似不能处理这个吧

作者: 暮雨輕橒   发布时间: 2010-05-11

引用
引用楼主zzmama于2010-05-11 12:54发表的
……
问题就是,.box也属于body里的一部分,所以当单击.box的时候也会隐藏它自己,我想当单击.box不要隐藏,所以有没有办法限制这种现象呢?
……

作者: jokeykiss   发布时间: 2010-05-12

<script type="text/javascript" src="jquery-1.4.2.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
    $("body").click(function(){
        $(".box").hide();
        return false;
        });
    });
</script>

把事件绑定在body上,并阻止其冒泡——事件委托

作者: roooma   发布时间: 2010-05-15