我有一个像这样的窗口滚动功能:
function fixDiv() {
//scroll script goes here
}
$(window).scroll(fixDiv);
Run Code Online (Sandbox Code Playgroud)
现在我想在单击按钮时取消该功能
$('button').on('click',function(){
//cancel the fixDiv() function
// I have tried this:
fixDiv != fixDiv; // and changed/set variable for fixDiv() like var fixDiv = function(){}
});
Run Code Online (Sandbox Code Playgroud)
但似乎没有用.我可以用什么方法取消该功能.
(请注意:如果再次单击应该再次运行的按钮)
请阅读赏金说明.
尝试类似的东西:
$('button').on('click', function () {
this.off = !this.off;
$(window)[this.off?'off':'on']("scroll", fixDiv )
});
Run Code Online (Sandbox Code Playgroud)
UPDATE
现在,如果要覆盖函数本身,可以使用以下代码:
//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;
Run Code Online (Sandbox Code Playgroud)
注意,如果用作引用方法,则覆盖函数不会覆盖处理程序.因为jQuery将为存储的每个事件创建一个处理程序$._data(elem,"events").为了说明它,请参阅jsfiddle的不同之处:
| 归档时间: |
|
| 查看次数: |
153 次 |
| 最近记录: |