2012-01-31 75 views
0

我正在使用腳本在網頁上製作用戶的鍵盤控件左/右滑動導航。這裏的腳本:使用回調來禁用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打開添加回調,將變量切換爲true。在你的鍵盤控制中,只有當變量= false時才執行。哦,是的,在FancyBox關閉時將它設置爲false。 – jolt 2012-01-31 15:26:44

回答

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 2012-01-31 23:30:15

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,檢查覆蓋層的存在是一個很好的方法來解決這個問題。 – 2012-02-01 07:39:08