1

关于 Javascript/jQuery 执行及其顺序的问题/说明。

如果我似乎在这里回答了我自己的问题,请原谅我,但我觉得我在这个过程中遗漏了一个关键的东西。

有人告诉我,我的选择器没有使用,因为 DOM 还没有准备好,这带来了这个问题。脚本最初是使用 ready jQuery 的 ready 方法在头脑中出现的。

感谢大家。

问题:

  1. 无法访问 Drupal 模板文件。
  2. 只能加在头上。
  3. 通过 jQuery 追加对 script 标签不太有用。
  4. 我们的解决方案目前正在链接到标记中的文件。
  5. 我真的在寻求澄清这里的过程。

语境:

(对不起)...元素不是我的选择器的目标,来自头部的脚本。语法是正确的,因为它针对 HTML 标记没有问题。

我的理解是准备好的方法/结果监听器将在 DOM 完全构建后触发。

我相信我已经知道了

  1. 我知道理想情况下,脚本应该放在标记中的结束正文标记的正上方。

  2. 我知道当标记器遇到脚本标签时,它会停止一切并执行脚本(除非延迟/异步)。

  3. 我知道这就是为什么理想情况下它们应该放置在结束 body 标记之上,以便 DOM 准备就绪。

  4. 我知道 jQuery 就绪方法附加了一个侦听器,当浏览器在加载 DOM 后切换到就绪状态时,它会触发。

问题

  1. 考虑到所有这些,由于标记器的原因,放在头部会导致 ready 方法无用,因为它会立即执行?

  2. 这真的只是为了避免碰撞/覆盖多个window.onloads吗?(应该澄清。)

4

2 回答 2

1

考虑到所有这些,由于标记器的原因,放在头部会导致 ready 方法无用,因为它会立即执行?

错误的。该方法在 DOM 完全加载时才ready()被调用,它所做的只是建立一个等待 DOM 加载的侦听器,以便在准备好操作 DOM 时执行方法中的语句,换句话说,它添加了一个仅在文档完全加载时才调用和执行的事件的侦听器。ready()ready()loaded

这真的只是为了避免碰撞/覆盖多个加载吗?

“碰撞/覆盖”的真正含义是什么?您可以让多个侦听器在 JavaScript 中侦听相同的事件,并且它们不会相互覆盖或冲突。

于 2013-11-01T14:53:09.247 回答
1

从你的问题:

我知道 jQuery 就绪方法会一直等到浏览器在加载 DOM 后切换到就绪状态。

嗯,有点。jQueryready方法不会等待。它附加了一个事件侦听器。该函数已附加,但未执行。该函数仅在 DOM 就绪时执行;页面的其余部分继续加载。

你真的处于微优化领域。是的,将script元素放在末尾body是理想的,但它对现实的影响很小,除非你有一个庞大、复杂和耗时的脚本。

于 2013-11-01T14:54:59.597 回答