我的代码中有多个文档就绪事件侦听器。
$(document).ready(function() {
console.log("hello james")
});
$(document).ready(function() {
console.log("hello cindy")
});
$(document).ready(function() {
console.log("hello dave")
});
我只想在用户访问该页面时准备好第一个文档。我不需要另外两个文件准备就绪。
我无法使用全局变量来检查这一点。我希望做的是使用bind
。我的理论是通过将代码设置为......
$(document).bind("ready", function() {
console.log("hello james")
});
$(document).bind("ready", function() {
console.log("hello cindy")
});
$(document).bind("ready", function() {
console.log("hello dave")
});
只有第一个绑定会调用。这是我目前对bind
如何运作的理解。
现在,这是踢球者。我需要发生的是一旦这些绑定运行(再次我只希望第一个绑定被执行,因此"你好詹姆斯"打印出我的控制台日志),我需要取消绑定准备好的文档。我在考虑做...
$(document).bind("ready", function() {
console.log("hello james")
$(document).unbind("ready");
});
$(document).bind("ready", function() {
console.log("hello cindy")
});
$(document).bind("ready", function() {
console.log("hello dave")
});
但这不起作用。 "你好詹姆斯"将被记录,但就绪事件不会解除绑定。我在这里错过了什么吗?我做错了什么?
答案 0 :(得分:0)
您可以尝试event.stopImmediatePropagation()
这可以防止绑定到同一事件的任何其他处理程序被执行:
$(document).on("ready",function(e) {
e.stopImmediatePropagation();
console.log("hello james");
});
$(document).on("ready",function(){console.log("hello cindy");});
$(document).on("ready",function(){console.log("hello dave");});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
(我将.ready(
更改为.on("ready",
,否则代码片段和jsfiddle都无法生成/生成错误,但我不明白为什么。尽我所能告诉.ready(
应该可以正常工作。)