1

class の要素をクリックしてメニューを表示するために開閉するパネルがあります.open。最初にクリックすると、パネルが開きます。パネルが開いたら、メニュー項目をクリックすると、パネルが閉じます。

私が直面している問題は、メニュー項目をクリックした後にパネルを閉じると.open、パネルが再び開く前に 2 回押す必要があることです。

私は最初にこれを実行します:

$(".open").toggle(function(){
   $(".header").animate({height:"100%"},200);
   },function(){
        $(".header").animate({height:50},200);
});

これにより、メニュー付きのパネルが開き、メニュー項目をクリックすると次のようになります。

$(".navMore li a").on("click", function(e) {
   e.preventDefault();
    ...

繁殖の問題でしょうか?追加:

$(".navMore li a").on("click", function(e) {
   e.preventDefault();
   e.stopPropagation();

それでも同じ問題が残ります。

4

1 に答える 1

1

イベントはclickJQuery でバブルアップします。これを防ぐには、下位要素での伝播を停止し、上位要素のハンドラーの起動を停止する必要があります。

関数には、次の$('.open')ものを配置する必要があります。

$(".open").toggle( function( event ) {
    if( !$( event.target ).is("a") )
        {
            $(".header").animate({height:"100%"},200);
        }
},....);
于 2013-02-18T00:21:29.507 に答える