【问题标题】:head.ready() vs. $(document).readyhead.ready() 与 $(document).ready
【发布时间】:2012-08-31 18:57:33
【问题描述】:

最近发现了head.js 库,我对它很满意,尽管我仍然对一件事有些困惑。

来自 headjs.com:

脚本到达时已经触发了“DOM 就绪”事件,例如 $(document).ready()。如果加载的脚本依赖于该事件,请确保您的库可以处理此问题。 jQuery 1.4+ 有效。

考虑到这一点,如果 $(document).ready() 中的代码依赖于使用 head.js 加载的外部脚本,那么设置使用 jQuery 的页面的最佳方法是什么?

我们是否可以完全放弃 $(document).ready() 调用,并且仍然成功地设置依赖于准备好的文档的事件侦听器之类的东西?例如:

head.js("script1.js", "script2.js", "script3.js", function() {
    $('#button').click(function(event) {
        alert("clicked");
    });
});

或者我们想在函数中包装 $(document).ready() 吗?

只是想知道最好的做法是确保一切都在需要的时候准备就绪。

【问题讨论】:

    标签: jquery document-ready head.js


    【解决方案1】:

    无论哪种方式都可以。如果 DOM 已经完全初始化,则立即调用传递给 ready() 的处理程序。

    为了获得的性能提升,您可能希望删除 ready 处理程序并直接包含您的代码,除非您依赖于像 jQuery 的 $ 对象这样的副作用被传递给处理程序。

    【讨论】:

    • 那么 head.ready() 就像 $(document).ready() 一样在 DOM 准备好之后等待执行,还是在脚本加载后才执行?
    • @Dougie,正如您引用的文档所说,the “DOM ready” event such as $(document).ready() is already fired when the scripts arrive。所以head.js() 在这种情况下的行为与ready() 完全相同。 (我怀疑head.js() 在注入脚本之前等待 DOM 准备好。)
    猜你喜欢
    • 2011-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-20
    • 2011-04-07
    • 1970-01-01
    • 2011-03-26
    • 1970-01-01
    相关资源
    最近更新 更多