3

这是一个奇怪的情况。尽管确保它的所有依赖项都在它之前加载(在我的情况下它只是 jQuery 库),但我的脚本在加载到 head 部分(即<head>)时不起作用,但在加载到页脚时(在上面的某个地方)它的工作</body>标签)。

由于这还不够清楚,让我举一个活生生的例子。这是网页。现在,查看页面的源代码,这就是我正在谈论的代码。

<script type='text/javascript'>
/* <![CDATA[ */
var yjlSettings = {"gifUrl":"http:\/\/whatthenerd.com\/wp-content\/themes\/reddlec\/images\/ajax-loader.gif","autoGrow":"enable"};
/* ]]> */
</script>
<script type='text/javascript' src='http://whatthenerd.com/wp-content/themes/reddlec/js/no-reload-comments.js?ver=3.3.2'></script>

它应该做的是允许用户在不重新加载页面的情况下发表评论。(请随时在页面上测试评论:))——但事实并非如此。为什么?

PS:就像我之前说的,当上述脚本在</body>标签之前加载时,一切正常。我真的不明白是什么导致了冲突。

4

1 回答 1

5

您的脚本会立即在 DOM 中查找元素:

var $commentlist = jQuery('.commentlist');
var $respond = jQuery('#respond');

在脚本中找到两个示例。这些项目在加载标题时不存在,但在到达正文末尾时它们确实存在。如果你想从你的标题中加载它,你需要将它包装在一个文档就绪块中:

jQuery(document).ready(function($) {
  // Code using $ as usual goes here.
});

通过延迟代码的执行直到文档完全加载并构建 DOM,这使得在页面顶部加载是安全的。

更多关于ready在线的信息: http: //api.jquery.com/ready/

于 2012-06-06T17:13:26.170 回答