gpt4 book ai didi

javascript - 取消绑定(bind) jQuery ajaxSuccess 事件

转载 作者:数据小太阳 更新时间:2023-10-29 05:19:36 24 4
gpt4 key购买 nike

解绑全局 ajaxSuccess 事件处理程序时遇到问题。

每次我运行以下代码然后测试 ajax 函数时,每次运行代码时都会调用一次方法 Hook 。

var hook = function() { console.log('hey'); };
$(document).unbind('ajaxSuccess', hook); // not working
$(document).bind('ajaxSuccess', hook);

我也尝试过使用

$(document).ajaxSuccess(hook);

但上面的内容并没有取代现有的 hook 引用,并且具有与上面相同的行为。

可能相关的一件事是我使用的是非常旧版本的 jQuery (1.3.2)。

我确定这里显然缺少一个解决方案,但大脑今天无法正常工作。任何帮助将不胜感激!

提前致谢!

最佳答案

.unbind() 中的第二个参数应该是对当前绑定(bind)的函数的引用。如果您将变量更改为指向不同的函数,它将不起作用。

因此,如果您首先将 ajaxSuccess 绑定(bind)到名为 hook 的函数:

var hook = function () { console.log("a"); };
$(document).bind("ajaxSuccess", hook);

然后更改hook并尝试解除绑定(bind):

hook = function () { console.log("b"); };
$(document).unbind("ajaxSuccess", hook);
$(document).bind("ajaxSuccess", hook);

这将失败,因为 hook 不再包含对原始函数的引用。相反,在更改 hook 的值之前取消绑定(bind):

$(document).unbind("ajaxSuccess", hook);
hook = function () { console.log("b"); };
$(document).bind("ajaxSuccess", hook);

或者,如果这不可能,例如,因为原始的hook 不再在范围内,您可以省略第二个参数以删除所有 绑定(bind)处理程序:

$(document).unbind("ajaxSuccess");

当然,如果您有另一个处理程序绑定(bind)到 document.ajaxSuccess,它也将被解除绑定(bind)。

关于javascript - 取消绑定(bind) jQuery ajaxSuccess 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13020043/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com