jas*_*328 2 javascript jquery event-listener turbolinks
我绑定然后将ready事件侦听器解绑定到文档.
$(document).bind("ready", readyEventHandler);
function readyEventHandler() {
// run some code
$(document).unbind("ready");
}
Run Code Online (Sandbox Code Playgroud)
代码不会产生任何错误,并且会起作用.但是,我的javascript被缓存并复制了代码,所以如果我回去然后在浏览器中转发页面,我最终会运行这个代码不止一次.发生这种情况时,根本不会调用ready事件侦听器.我是否正确解除了此事件监听器的绑定?我知道缓存问题变得有问题(这是它自己的独立问题)但我只是想绑定ready事件监听器,让它运行代码,然后取消绑定它.
不太确定它会有所帮助,但这是我的2美分 - 而不是试图解除绑定readyEventHandler- 确保如果你运行该功能一旦它不会运行两次:
var readyHandlerRun = false;
$(document).bind("ready", readyEventHandler);
function readyEventHandler() {
if (readyHandlerRun) {
return;
}
readyHandlerRun = true;
// Rest of your code...
}
Run Code Online (Sandbox Code Playgroud)
刚刚出现的另一个选项:
$(document).bind("ready", readyEventHandler);
function readyEventHandler() {
readyEventHandler = function() { }
console.log('ready');
// Rest of your code...
}Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>Run Code Online (Sandbox Code Playgroud)
更新(@ jason328)
与Dekel交谈后,他给了我适当的答案.
$(document).bind("ready", function() {
readyEventHandler();
readyEventHandler = function() { }
});
Run Code Online (Sandbox Code Playgroud)
优雅,工作就像一个魅力!
| 归档时间: |
|
| 查看次数: |
436 次 |
| 最近记录: |