【问题标题】:What should be in and what should be out of a jQuery.ready()?jQuery.ready() 应该包含什么,应该包含什么?
【发布时间】:2011-08-18 18:44:20
【问题描述】:

jQuery.ready() 中应该包含什么以及应该输出什么?

从性能的角度来看,我在某处读到将所有代码封装在 jQuery.ready() 中并不是一种有效的方法。

那么我的问题是:什么应该在里面,什么可以在没有问题的情况下被淘汰(我想代表可以被留在外面,但这是一个快速的猜测)?

谢谢

【问题讨论】:

    标签: jquery optimization domready


    【解决方案1】:

    为了获得最佳性能,请将您的 js 放在结束 body 标记之前。这样您就可以完全消除 jquery 就绪。 UI 加载速度很快,因为它是 not blocked,通过正在下载的脚本,当 js 被解析和调用时,您可以确定上面 dom 中的元素已准备好进行操作。

    【讨论】:

    • 好建议。但是关于 jQuery 代码,什么样的代码(事件、ajax、...)实际上可以毫无问题地存在于 DOM 之外?
    • @Cybrix 如果您在底部包含脚本,所有这些!
    • 很抱歉您第一次回答正确。我只是读你的答案有点太快了。 :P
    • 脚本是内联的还是外部调用的有关系吗?
    • @Cybix - 内联是指元素上的 js 事件属性,例如 onclick。如果这是他的情况 - 但我强烈建议不要进行任何内联事件。将其抽象为单独的 js 文件。尽量不要把标记和js混在一起
    【解决方案2】:

    jQuery.ready() 在页面加载完成后调用。请参阅jQuery.ready() 中的第一句话。如果您希望在页面加载完成之前触发事件,jQuery.ready() 将不是要走的路。

    【讨论】:

      【解决方案3】:

      您应该保留函数声明,例如

      fnc = function() { ... };
      

      或任何其他声明。因为如果你把它全部塞进去,那段代码只有在整个 DOM 加载完毕后才会开始执行。否则,它会在下载后立即开始执行。只有当您的 javascript 需要下载 DOM 时,才应该出现 jQuery 包装器。

      var blah = function() {
         //...
      };
      
      $(function() { //same as jQuery(document).ready or $(document).ready
          blah();
      });
      

      【讨论】:

      • 但是你用你所有的函数 decs 膨胀了窗口对象。最好在单个应用命名空间中声明函数。
      猜你喜欢
      • 2012-05-26
      • 2015-09-13
      • 1970-01-01
      • 1970-01-01
      • 2018-12-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多