2012-01-31 13 views
0

スクリプトを使用して、ユーザーのキーボードコントロールをWebページの左右のスライドナビゲーションにしています。ここではスクリプトは次のとおりです。ただしコールバックを使用してjqueryスクリプトを無効にする

$(document.documentElement).keyup(function (event) { 
     // handle cursor keys 
     if (event.keyCode == 37) { 
      // go left 
      $('.leftArrow').click(); // triggers a click on the 'prev' span 
     } else if (event.keyCode == 39) { 
      // go right 
      $('.rightArrow').click(); // triggers a click on the 'next' span 
     } 
    }); 

、私はまた、ライトボックス内の画像を制御するために左/右矢印を使用していますFancyBox(jqueryのライトボックスプラグイン)を、使用しています。スクリプトはコールバックを許可します(リンクのドキュメントを参照)。

ライトボックスが有効になっている場合は、スクリプトを無効にしたいと思います。ライトボックスがアンロードされると、上記のコードを再度アクティブにしたいと思います。これは可能ですか?

+1

グローバル変数番目FancyBoxが開いているかどうかをトラックで確認します。 fancybox open callbackで、変数をtrueに切り替えます。キーボードコントロールでは、variable = falseの場合にのみ実行します。はい、FancyBoxを閉じるとfalseに設定されます。 – jolt

答えて

1

あなたがオブジェクトからイベントハンドラを削除するために.off()を使用することができます。http://api.jquery.com/off/

ただし、これは特定の条件下でのみ作業をしなければならないので、(そう、オンとオフ)私はあなたがkeyUpイベントでいくつかのチェックを作成すべきだと思いますイベントは、のように:

$(document.documentElement).keyup(function (event) { 
    //check that fancybox isnt active 
    //could use a custom attribute like data-active to set this as well, 
    //or some other variable 
    if($(myFancyBox).css("display") != "none") { 
     // handle cursor keys 
     if (event.keyCode == 37) { 
      // go left 
      $('.leftArrow').click(); // triggers a click on the 'prev' span 
     } else if (event.keyCode == 39) { 
      // go right 
      $('.rightArrow').click(); // triggers a click on the 'next' span 
     } 
    } 
}); 
+0

あなたはどちらも正しいアイデアを持っていましたが、最初に入りました。歓声メイト。 – Jascination

2

最も簡単なのはfancyboxギャラリーがアクティブな場合は、あなたのハンドラ内でチェックすることです:

$(document.documentElement).keyup(function(event) { 

    if ($('#fancybox-overlay').length) { 
     return false; 
    } 

    // handle cursor keys 
    if (event.keyCode == 37) { 
     // go left 
     $('.leftArrow').click(); // triggers a click on the 'prev' span 
    } else if (event.keyCode == 39) { 
     // go right 
     $('.rightArrow').click(); // triggers a click on the 'next' span 
    } 
}); 
+0

+1、オーバーレイの存在をチェックすることは、これについて行くためのきちんとした方法です。 –

関連する問題