单击body时隐藏div不能正常工作

时间:2012-10-06 18:31:28

标签: jquery

这是一个愚蠢的问题,但我无法弄明白,说我有两个div:

<div class="one"></div>
<div class="two"></div>

Div one是一个按钮,div是一个盒子。

现在当我点击div one时,div two应该是可见的(默认情况下不是)

当我点击div one时,div two会再次消失,等等......

这是我的代码:

$(".one").live("click", function(){
    state = $(this).attr("state");

    if(state == "active"){
        $(this).attr("state", "inactive");
        $(".two").css("display", "none");
    }else{
        $(this).attr("state", "active");
        $(".two").css("display", "block");
    }
});

现在我的问题是,当我点击页面中的任何地方时,我也希望div two消失,所以这就是我所做的:

$(document).click(function(){
     $(".one").attr("state", "inactive");
     $(".two").css("display", "none");
});

现在发生的事情可能是单击div后文档上的click事件发生了,它不允许我打开框。

我知道的一个解决方案是检查是否(event.target.className != "one"),但我真的想避免这种情况,因为在我的真实项目中,我在该按钮中有很多其他元素,所以我需要包含所有这些元素,我想避免这种情况。

1 个答案:

答案 0 :(得分:0)

来自绑定return false;处理程序的

.live()。您希望停止事件传播,这是打破实时事件链(已经冒泡)的方法。