代码之家  ›  专栏  ›  技术社区  ›  RMorrisey

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

  •  2
  • RMorrisey  · 技术社区  · 14 年前

    因为我的 $(function () {...}) 处理程序似乎是在加载必备插件脚本之前启动的。只在IE中发生(在IE7中测试)。

    我有一些HTML在我的 <head> 看起来是这样的:

    <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-特殊.js
    2. jquery.noconflict()调用
    3. jquery.collapslefieldset.js//定义$.fn.collapse
    4. jquery(“collapse119”)。调用collapse(…)

    当这段代码在FF中运行时,一切正常。当我在IE7(或IE8 w/compat.视图:IE7标准模式),我得到一个javascript错误。调试器显示jquery.fn.collapse未定义。

    使用IE8开发人员工具,我尝试查看jquery.collapslefieldset.js。我在列表中看到了脚本,但是工具告诉我不能设置断点,因为没有加载脚本。

    为什么在运行我的$()ready处理程序之前不加载collapslefieldset.js?任何见解都会受到赞赏!谢谢。

    3 回复  |  直到 14 年前
        1
  •  4
  •   Ken Redler    14 年前

    你在用

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

    它是

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

    相反,你可以尝试

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

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

        2
  •  1
  •   Robert Harvey    14 年前

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

    如果这不能修复它,请将似乎没有及时加载的脚本移回 <head> ,并将其余脚本保留在底部。

        3
  •  0
  •   Tom Makin    10 年前

    对于任何其他遇到此问题的人,可能需要再次检查您没有对jquery的多个引用。如果您在头中定义了插件,那么它们将被主体中的第二个jquery调用覆盖。

    推荐文章