加载jquery两次导致错误?

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

      

我正在加载标签如下:

   $(document).ready(function(){ $("#tabs").tabs(); $("#tabs ul li a").corner('7px top'); var $tabs = $('#tabs').tabs(); $tabs.tabs('select', 0); dateValidation(); changeOption(); deleteConfirmation(); });    $(document).ready(function(){ $("#tabs").tabs(); $("#tabs ul li a").corner('7px top'); var $tabs = $('#tabs').tabs(); $tabs.tabs('select', 1); changeOption(); deleteConfirmation(); });   

validationdate.js是我自己构建的js,用于检查日期和其他内容。 它将此作为第一行:

 document.write(''); 

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

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

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

  

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

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

要修复它,这一行:

 document.write(''); 

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

 if (typeof jQuery == 'undefined') { document.write(''); } 

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

我花了几个小时搞清楚为什么使用jQuery.noConflict()不能正常工作……

只需使用var j$ = jQuery.noConflict(); 然后在每次在该页面上使用Jquery时使用j $代替$。

如果你使用iframe将导致JQuery加载两次
1)为每个页面加载JQuery(即通过application.html.erb在Ruby on Rails中)和
2)iframe也是来自应用程序的页面,而不是外部站点的iframe。