加载jquery两次导致错误?

yur*_*uri 11 validation jquery

我有一个页面,其中正在加载jquery +其他js:

<script src="/eiv/javascripts/jquery-1.3.2.min.js" type="text/javascript"></script>
<script src="/eiv/javascripts/jquery.jeditable.js" type="text/javascript"></script>
<script src="/eiv/javascripts/jquery-ui-1.7.1.custom.min.js" type="text/javascript"></script>
<script src="/eiv/javascripts/corner.js" type="text/javascript"></script>
<script src="/eiv/javascripts/jquery.form.js" type="text/javascript"></script>
<script src="/eiv/javascripts/validationdate.js" type="text/javascript"></script>
Run Code Online (Sandbox Code Playgroud)

我正在加载标签如下:

<%if (tabnum == 1) {%>
        <script type="text/javascript">

            $(document).ready(function(){
                $("#tabs").tabs();
                $("#tabs ul li a").corner('7px top');

               var $tabs = $('#tabs').tabs();
                $tabs.tabs('select', 0);
                dateValidation();
                changeOption();
                deleteConfirmation();
        });
        </script>
<%} else if (tabnum==2) {%>
        <script type="text/javascript">

            $(document).ready(function(){
                $("#tabs").tabs();
                $("#tabs ul li a").corner('7px top');

               var $tabs = $('#tabs').tabs();
                $tabs.tabs('select', 1);

                   changeOption();
                   deleteConfirmation();
        });
        </script>
<%}%>
Run Code Online (Sandbox Code Playgroud)

validationdate.js是一个矿山建造的js,检查日期和其他东西.它有这个作为第一行:

document.write('<script type="text/javascript" src=""jquery-1.3.2.min.js""></script>');
Run Code Online (Sandbox Code Playgroud)

问题: 这是否正在生产中..这个页面出错并给出了JS错误.这会导致选项卡无法点击.这个错误间歇性地发生,我似乎无法在我的机器上重现它.两台机器都使用IE浏览器.错误也发生在Firefox中,虽然很少JS错误的东西没有出现在Firefox中.我甚至还有没有显示任何JS错误的firebug.

我怀疑错误即将到来,因为validationdate.js还在加载jquery-1.3.2.min.js.这可能是一个错误吗?

顺便说一句,我得到的JS错误是'异常被抓住但没有被抛出..线23'和第23行正在跟随

<script src="/eiv/javascripts/jquery-1.3.2.min.js" type="text/javascript"></script>
Run Code Online (Sandbox Code Playgroud)

我真的没有选择,我愿意尝试一下.以及在我的机器上重现的方法,以便我可以解决它!

Nic*_*ver 14

首先回答你的问题,是的,包括jQuery两次可能导致各种问题.

要修复它,这一行:

document.write('<script type="text/javascript" src=""jquery-1.3.2.min.js""></script>');
Run Code Online (Sandbox Code Playgroud)

应该包装以检查jQuery是否已经存在而不是盲目地再次包含它,如下所示:

if (typeof jQuery == 'undefined') {  
  document.write('<script type="text/javascript" src=""jquery-1.3.2.min.js""></script>');
}
Run Code Online (Sandbox Code Playgroud)

然后,如果jQuery尚未在页面上,它将仅包含它.有一点需要注意,如果你使用的是不同的(可能更新的)jQuery版本而不是构建验证代码,那么有可能会有一些中断.

  • @ ripper234 - 两者......当你重新加载jQuery时,它将重新定义`window.$`和`window.jQuery`,例如清除所有以前加载的插件.这可能是双重包含的最常见症状 - 我在Stack Overflow上看到:"为什么我的插件没有定义?我包含了脚本!" (6认同)