我绑定然后将ready事件侦听器解绑定到文档。
$(document).bind("ready", readyEventHandler);
function readyEventHandler() {
// run some code
$(document).unbind("ready");
}
代码不会产生错误并且可以正常工作。但是,我的javascript被缓存并复制了代码,因此如果我返回然后在浏览器中转发页面,我最终将运行此代码不止一次。发生这种情况时,根本不会调用ready事件侦听器。我是否正确解除了此事件监听器的绑定?我知道缓存问题变得有问题(它本身就是一个独立的问题)但我只想绑定ready事件监听器,让它运行代码,然后取消绑定。
答案 0 :(得分:5)
不太确定它会有所帮助,但这是我的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>
&#13;
更新(来自@ jason328)
与Dekel交谈后,他给了我适当的答案。
$(document).bind("ready", function() {
readyEventHandler();
readyEventHandler = function() { }
});
优雅,就像魅力一样!
答案 1 :(得分:1)
如果您只想使用一次eventhamdler,则可以使用one
代替bind
$(document).one("ready", function() {
// code to run on document ready just for once
});