jquery - 如何取消/放弃滚动功能?

标签 jquery

我有一个像这样的窗口滚动功能:

function fixDiv() {
//scroll script goes here
}
$(window).scroll(fixDiv);

现在我想取消点击按钮时的功能

$('button').on('click',function(){
//cancel the fixDiv() function
// I have tried this:
fixDiv != fixDiv; // and changed/set variable for fixDiv() like var fixDiv = function(){}
});

但似乎不起作用。有什么办法可以取消该功能。

(请注意:如果再次单击该按钮,应该会再次起作用)

<小时/>

请阅读赏金说明。

最佳答案

尝试类似的事情:

DEMO

$('button').on('click', function () {
    this.off = !this.off;
    $(window)[this.off?'off':'on']("scroll", fixDiv )
});

更新

现在,如果您想重写函数本身,可以使用以下代码:

//using anonymous function as handler, code inside is processing on the fly
$('#anchorAnonymous').on('click',function(){
    fixDiv();
    //any other code, still be called even fixDiv() is overrided...
});
//click to override fixDiv() function
$('#btnoverride').on('click', function () {
    this.override = !this.override;
    //$.noop = function(){} -> do nothing
    fixDiv = this.override?$.noop:storedFixDiv;
});
//this is used to store fixDiv() function
window.storedFixDiv = fixDiv;

请注意,如果用作引用方法,重写函数不会重写处理程序。因为 jQuery 将为 $._data(elem,"events") 中存储的每个事件创建一个处理程序。 为了说明这一点,请参见 jsfiddle 中的差异:

jsFiddle example

关于jquery - 如何取消/放弃滚动功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20902374/

相关文章:

javascript - 是否可以将这些相似的功能合并为一个功能?

javascript - HTML 有序列表不正确显示子项

javascript - jqModal/JQuery 问题,div 未更新新内容?

javascript - 使用 jQuery 焦点和模糊来显示和隐藏消息

javascript - 将 javascript 重写为 jquery 以实现页面上的多个表单

javascript - 如何在开发和生产模式下的jQuery ajax请求中设置不同的baseUrl路径?

javascript - 如何阻止 JQuery UI 自动完成清除以前的条目?

jQuery 可以在电脑上运行,但不能在 iPad 上运行?

javascript - 将功能应用于所有按钮?

jquery - 没有标题属性的简单 jQuery UI 工具提示