如何删除附加到滚动事件的行为?

时间:2013-09-10 14:44:51

标签: javascript jquery html css

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

例如,我得到了这段代码:

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

我希望“指令”仅在我的某个div显示时显示(显示:阻止)。 实际上,当我隐藏div时,我不再希望在滚动时应用指令......

我可以通过简单的“if(mySpecialVar == true){// instructions}”创建一个与我的指令相关的函数并使它们能够执行。像这样:

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

这样,当我隐藏或显示div时,我可以修改mySpecialVar。但我甚至不希望浏览器在没有执行指令时使这个简单的条件(对于最大优化)。

请问好吗? :)

4 个答案:

答案 0 :(得分:0)

尝试

if($(your_div).is(":visible")){//instructions}

答案 1 :(得分:0)

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

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

function myScroll() {
  // Do stuff
}

答案 2 :(得分:0)

您可以使用:visible

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

文档:
:visible
is()

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

答案 3 :(得分:0)

您可以将函数保存在变量中,将其绑定到事件,然后将其删除,如下所示:

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

在显示div的代码中:

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

在隐藏div的代码中:

$(document).off("scroll", the_function);//Remove the event