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

标签 javascript jquery html css

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

例如我得到了这段代码:

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

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

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

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

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

有什么想法吗? :)

最佳答案

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

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

在显示 div 的代码中:

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

在隐藏 div 的代码中:

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

关于javascript - 如何删除附加到滚动事件的行为?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18722006/

相关文章:

javascript - 替换字符串中相似的单词

javascript - 如何使用api创建quickblox应用程序?

javascript - DIV 节点怎么会是 "detached",有什么用?

javascript - 媒体查询更改时销毁 Jquery 函数

javascript - 将数组绑定(bind)到 AngularJS 中的对象属性时忽略虚假值

javascript - jquery - 无法在 keyup 事件上捕获 `@` (按速率符号)

javascript - 如何为数据库中的不同记录/行创建用户生成的链接列表,单击后填充 html 表单?

javascript - HTML 表单不会创建新条目

html - 需要一个选项来回到以前的网页设计

html - 如何使 <div> 中的行列网格居中。 HTML