$(document).ready(function(){...})在加载插件脚本之前运行

时间:2010-06-05 00:37:46

标签: javascript jquery jquery-plugins internet-explorer-7 ready

我收到了一个JS错误,因为我的$(function () {...})处理程序似乎是在加载必备插件脚本之前被触发的。只在IE中发生(在IE7中测试)。

我的<head>中有一些HTML,如下所示:

<script type="text/javascript" src="../resources/org.wicketstuff.jwicket.JQuery/jquery-1.4.2-special.js"></script>
...
<script type="text/javascript" id="noConflict"><!--/*--><![CDATA[/*><!--*/
jQuery.noConflict();
/*-->]]>*/</script>
...
<script type="text/javascript" src="../resources/com.csc.aims.wicket.components.collapsiblefieldset.CollapsibleFieldsetBehavior/jquery.collapsiblefieldset.js"></script>
<link rel="stylesheet" type="text/css" href="../resources/com.csc.aims.wicket.components.collapsiblefieldset.CollapsibleFieldsetBehavior/jquery.collapsiblefieldset.css" />
<script type="text/javascript">
jQuery(function(){
jQuery('#collapse119').collapse({"iconClosedUrl":"../resources/img/white_plus","iconOpenUrl":"../resources/img/white_minus"});
});
</script>

请注意,根据HTML代码,序列如下:

  1. 的jquery-1.4.2-special.js
  2. jQuery.noConflict()调用
  3. jquery.collapsiblefieldset.js //定义$ .fn.collapse
  4. jQuery('#collapse119')。collapse(...)被称为
  5. 当这段代码在FF中运行时,一切正常。当我在IE7(或IE8 w / Compat。查看:IE7标准模式)中测试它时,我收到一个javascript错误。调试器向我显示jQuery.fn.collapse未定义。

    使用IE8开发人员工具,我尝试查看jquery.collapsiblefieldset.js。我在列表中看到了脚本,但该工具告诉我无法设置断点,因为脚本未加载。

    为什么在我的$()就绪处理程序运行之前没有加载collapsiblefieldset.js?任何见解将不胜感激!感谢。

3 个答案:

答案 0 :(得分:4)

你正在使用

$(function(){...});

的同义词
$(document).ready( function(){...} );

相反,您可以尝试

$(window).load( function(){...} );

会在页面加载序列中稍后触发。

答案 1 :(得分:1)

将所有脚本放在页面底部,就在</body>标记之前。

如果不能解决问题,请将看似没有及时加载的脚本移回<head>,并将其余脚本留在底部。

答案 2 :(得分:0)

对于遇到此问题的任何其他人,可能值得仔细检查一下,您没有多次引用jQuery。如果您在头部定义了插件,那么它们将被正文中的第二个jQuery调用覆盖。