0

这是一个愚蠢的问题,但我想不通,说我有两个 div:

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

div 1 是一个按钮,div 2 是一个盒子。

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

当我再次单击 divone时,divtwo消失了,依此类推...

这是我的代码:

$(".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");
    }
});

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

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

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

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

4

1 回答 1

0

return false;从绑定的.live()处理程序。您想停止事件传播,这就是打破实时事件链(已经冒泡)的方法。

于 2012-10-06T18:37:10.853 回答