0

これはばかげた質問ですが、私はそれを理解することができません、私は2つのdivを持っていると言います:

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

Div 1はボタン、Div2はボックスです。

これで、divをクリックするとdivonetwo表示されます(デフォルトでは表示されません)

oneそして、もう一度divをクリックするtwoと、divが消えます...

そのための私のコードは次のとおりです。

$(".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をクリックした後に発生し、ボックスを開くことができなくなります。

私が知っている解決策の1つは、チェックすることです(event.target.className != "one")が、実際のプロジェクトではそのボタンに他の要素がたくさんあるので、それらすべてを含める必要があり、それを避けたいので、本当に避けたいと思います。

4

1 に答える 1

0

return false;バインドされた.live()ハンドラーから。イベントの伝播を停止したいのですが、それがライブイベント(すでにバブルになっている)のチェーンを断ち切る方法です。

于 2012-10-06T18:37:10.853 に答える