2012-10-09 34 views
3

我有一种情况,在某些情况下,我希望处理程序绑定的jQuery ready不会实际触发DOMContentReady事件。这些处理程序被绑定在不同的地方,包括各种包含文件,插件等。因此,虽然我可以在页面顶部附近的脚本中设置某种全局变量,并且在每个$(document).ready()绑定之前检查此变量,但我宁愿不要。防止jQuery准备好处理程序发射

理想我正在找一两件事情,

  • 我可以在jQuery的对象上设置之前,包括会告诉它调用无视.ready()
  • 我可以调用一个方法的属性在DOMContentReady已经触发之前,在内联脚本文档的结尾处,解除与ready()处理程序的绑定。

明显的一个,$(document).unbind('ready')不这样做,我猜是因为.ready()不是普通的事件绑定。

可以这样做吗?如果是这样,怎么样?

我有一个模糊的想法是扩展jQuery原型,并用一种​​方法替换ready(),该方法将检查我将介绍的新属性。那有意义吗?

+0

你在哪里把你的'unbind'代码?如果你把它放在ready函数之前,它不应该解除它的绑定。如果你把它放在'ready'功能之内或之后。它已被称为。如果特定条件匹配,您可以在ready函数中返回'false'。 – Jashwant

+0

不,问题是调用'$(document).ready()'不会被'$(document).unbind('ready')'取消绑定。我不确定为什么。 – Dan

+0

我可以澄清你,如果你可以显示你的代码。顺便说一句,它看起来你已经找到了答案 – Jashwant

回答

7

你应该使用holdready

$.holdReady(true); 
$.getScript("myplugin.js", function() { 
    $.holdReady(false); 
}); 
+0

看起来很有希望。在这个时候,我没有我的开发环境,但我认为这正是我需要的。 – Dan

+0

jQuery的另一个隐藏功能。 +1 – Jashwant