繁体   English   中英

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

[英]$(document).ready(function() {…}) runs before plugin script loads

我收到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(...)被称为

当此代码在FF中运行时,一切正常。 当我在IE7(或带Compat。View的IE8:IE7标准模式)下进行测试时,出现JavaScript错误。 调试器向我显示jQuery.fn.collapse是未定义的。

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

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

您正在使用

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

这是的同义词

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

相反,您可以尝试

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

在页面加载顺序的稍后触发。

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

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

对于其他遭受此问题困扰的人,值得仔细检查一下您没有对jQuery的多个引用。 如果您在头中定义了插件,则它们将被正文中的第二个jQuery调用覆盖。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM