Загрузка jquery дважды вызывает ошибку?

У меня есть страница, на которой загружается jquery + other 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>

Я загружаю вкладки следующим образом:

<%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>
<%}%>

validationdate.js - это построенный в шахте js, который проверяет даты и прочее. он имеет это как первую строку:

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

Проблема: Является ли это в производстве в момент возникновения этой ошибки на странице и дает ошибку JS. Это приводит к тому, что вкладка не может быть нажата. Эта ошибка происходит с перерывами, и я не могу воспроизвести ее на своей машине. Обе машины используют IE. Ошибка также происходит в Firefox, хотя небольшая ошибка JS не появляется в Firefox. и у меня даже есть firebug, который также не показывает ошибку JS.

Я подозреваю, что ошибка возникает, потому что 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>

У меня действительно нет вариантов, и я готов попробовать все. а также способы воспроизведения на моей машине, чтобы я мог исправить это.

Ответ 1

Сначала, чтобы ответить на ваш вопрос, да, в том числе jQuery дважды, могут возникать всевозможные проблемы.

Чтобы исправить это, эта строка:

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

Должно быть завершено, чтобы проверить, существует ли уже jQuery, а не слепо, включая его снова, например:

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

Затем он включит его только в том случае, если jQuery еще не на странице. Существует одно предостережение, если вы используете другую (возможно, более новую) версию jQuery, чем был создан код проверки, есть вероятность, что есть некоторые перерывы.

Ответ 2

Я потратил часы на выяснение, почему использование jQuery.noConflict() не работает, как...

Просто используйте        var j$ = jQuery.noConflict(); и после этого используйте j $вместо $каждый раз, когда вы используете Jquery на этой странице.

Ответ 3

Использование iframe приведет к тому, что JQuery будет загружаться дважды, если вы
1) загрузите JQuery для каждой страницы (т.е. В Ruby on Rails через application.html.erb) и
2) iframe также является страницей из вашего приложения, а не iframe внешнего сайта.