这是一种奇怪的情况。尽管确保在它之前加载了所有的依赖项(在我的情况下它只是jQuery库),但我的脚本在head部分(即<head>
)中加载时不起作用,但在加载时它的作用是页脚(在</body>
标记之上的某处)。
由于这个不够明确,让我举一个现实的例子。 This is the web page。现在,查看页面的来源,在那里,这是我正在谈论的代码。
<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>
标签之前加载时,一切正常。我真的没有看到可能导致冲突的原因。
答案 0 :(得分: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/