5

私の目標は、ユーザーがそれを見ることができたら、何かをより速く実行することです. 説明すると、ユーザーがメニュー ボタンをクリックするとメニューが開きますが、これは問題ありませんが、ユーザーがクリックしてメニューを閉じると、メニューをより速く閉じる必要があります。ただし、私のコードは、コードの 2 番目の「else if」部分を起動したくありません。

ここに私のコード:

  $(document).ready( function() {                       
   if ( !$(".TopList1").is(":visible")  ) { 
    $('.MenuButton').click(function() {         
        $( ".TopList1" ).toggle("slide", {direction: "down"}, 1000);
        $( ".TopList2" ).delay(800).toggle("slide", {direction: "down"}, 800);
        $( ".LeftList1" ).toggle("slide", {direction: "left"}, 1000);
        $( ".LeftList2" ).delay(800).toggle("slide", {direction: "left"}, 1000);
    });
   } else if ( $(".TopList1").is(":visible")  )  {
    $('.MenuButton').click(function() {         
        $( ".TopList1" ).toggle("slide", {direction: "down"}, 800);
        $( ".TopList2" ).toggle("slide", {direction: "down"}, 800);
        $( ".LeftList1" ).toggle("slide", {direction: "left"}, 800);
        $( ".LeftList2" ).toggle("slide", {direction: "left"}, 800);
    });
   }
});

アップデート:

Heres the jsFiddle link、cs​​sはそこにありませんが、アイデアを得ることができます.リンクは開きますが、同時に閉じたいです! - 最終結果は、クローズを切り替えることさえできず、フェードアウトするだけです!

4

2 に答える 2

1

問題は、ifステートメントが初期ロード時にのみチェックされていたことです。と評価されるためtrue、コードの上半分だけがトリガーされていました。それがまったく機能する理由toggleは、スマートであるため、上半分がサブメニューを展開および折りたたむためです。

このコードは機能します:

$(document).ready( function() {
    var menuClosed = true;
    $('.MenuButton').click(function() {
        if (menuClosed) {
            menuClosed = false;
            $( ".TopList1" ).toggle("slide", {direction: "down"}, 1000);
            $( ".TopList2" ).delay(800).toggle("slide", {direction: "down"}, 800);
            $( ".LeftList1" ).toggle("slide", {direction: "left"}, 1000);
            $( ".LeftList2" ).delay(800).toggle("slide", {direction: "left"}, 1000);
        } else {
            menuClosed = true;
            $( ".TopList1" ).toggle(0);
            $( ".TopList2" ).toggle(0);
            $( ".LeftList1" ).toggle(0);
            $( ".LeftList2" ).toggle(0);
        }
    });
});
于 2013-05-17T04:53:43.550 に答える
0

オプションを変更するだけです。

例えば

$( "#effect" ).effect( selectedEffect, options, 500, callback );

http://jqueryui.com/effect/

于 2013-05-15T12:18:42.360 に答える