2012-01-31 89 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