我将就绪事件侦听器绑定到文档,然后取消绑定。
$(document).bind("ready", readyEventHandler);
function readyEventHandler() {
// run some code
$(document).unbind("ready");
}
该代码不会产生任何错误并且可以工作。然而,我的 JavaScript 被缓存并重复代码,因此如果我返回然后在浏览器中转发页面,我最终会多次运行此代码。发生这种情况时,根本不会调用就绪事件侦听器。我是否正确解除了此事件侦听器的绑定?我知道缓存问题会成为问题(它是自己的单独问题),但我只想绑定就绪事件侦听器,让它运行代码,然后取消绑定。
不太确定它会有所帮助,但这是我的 2 美分 - 而不是尝试解除绑定readyEventHandler
- 确保如果您运行该函数一次,它不会运行两次:
var readyHandlerRun = false;
$(document).bind("ready", readyEventHandler);
function readyEventHandler() {
if (readyHandlerRun) {
return;
}
readyHandlerRun = true;
// Rest of your code...
}
刚才弹出的另一个选项:
$(document).bind("ready", readyEventHandler);
function readyEventHandler() {
readyEventHandler = function() { }
console.log('ready');
// Rest of your code...
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
UPDATE(@jason328)
与德克尔交谈后,他给了我适当的答案。
$(document).bind("ready", function() {
readyEventHandler();
readyEventHandler = function() { }
});
优雅又迷人!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)