0

如何删除仅在滚动事件中执行的特殊指令?

例如我得到这个代码:

$(document).scroll(function(){
// instructions
});

而且我希望“说明”仅在显示我的一个 div 时才起作用(显示:块)。实际上,当我隐藏 div 时,我不再希望在滚动时应用指令......

由于一个简单的“if(mySpecialVar==true){//instructions}”,我可以创建一个函数来收集我的指令并使它们能够被执行。像这样 :

$(document).scroll(function(){
if(mySpecialVar==true){//instructions}
});

这样,我可以在隐藏或显示 div 时修改 mySpecialVar。但是我什至不希望浏览器在不需要执行指令时做出这个简单的条件(为了最大优化)。

请问有什么想法吗?:)

4

4 回答 4

0

尝试

if($(your_div).is(":visible")){//instructions}
于 2013-09-10T14:48:14.680 回答
0

您可以使用命名函数和 jQuery 的.on / .off方法。绑定到您不想要的事件没有意义:

// Bind
$(document).on("scroll", myScroll);
// Unbind
$(document).off("scroll", myScroll);

function myScroll() {
  // Do stuff
}
于 2013-09-10T14:48:34.753 回答
0

你可以使用:visible

$(document).scroll(function(){
    if($("#mySpecialDiv").is(":visible")){
        //instructions
    }
});

文档::
可见
是()

演示:(隐藏 div 和滚动,什么都不会发生,显示 div 和滚动,你会得到一个弹出窗口)
jsfiddle

于 2013-09-10T14:48:43.817 回答
0

您可以将函数保存在变量中,将其绑定到事件,然后像这样将其删除:

var the_function = function(){/*instructions*/};

在显示 div 的代码中:

$(document).on("scroll", the_function);//Attach the event

在隐藏 div 的代码中:

$(document).off("scroll", the_function);//Remove the event
于 2013-09-10T14:51:20.063 回答