Как мне решить этот конфликт плагинов jQuery? - PullRequest
0 голосов
/ 30 июня 2011

Я использую два разных плагина jQuery; один для новостной ленты и другой для горизонтального текстового слайдера.

, но только один из них работает в тот момент, когда при использовании на одной странице это может быть связано с конфликтом jQuery. Если я прокомментирую первый плагин, второй плагин будет работать нормально, и наоборот.

Вот код:

<script type="text/javascript" src="js/jquery.js"></script>
    <script type="text/javascript" src="js/jquery.newsticker.js"></script>
    <script type="text/javascript">
        jQuery(document).ready(
            function()
            {
                jQuery("#news").newsTicker();
                jQuery("#development").newsTicker();                
            }
        );
    </script>
    <link href="css/style.css" rel="stylesheet" type="text/css">            
    <link rel="stylesheet" type="text/css" href="plugins/image_slider/css/sliderman.css" /> 


    <link type="text/css" href="css/humanity/jquery-ui-1.8.13.custom.css" rel="stylesheet" />   
    <script type="text/javascript" src="js/jquery-1.5.1.min.js"></script>
    <script type="text/javascript" src="js/jquery-ui-1.8.13.custom.min.js"></script>
    <script type="text/javascript">
        jQuery(function(){
            jQuery("#accordion").accordion({ header: "h3" });
        });
    </script>
    <link rel="stylesheet" href="css/news.css" type="text/css" media="screen">
    <script src="js/jcarousellite_1.0.1c4.js" type="text/javascript">  
</script>

Спасибо!

Ответы [ 4 ]

2 голосов
/ 29 августа 2012
  1. Не всегда достаточно просто добавить jQuery.noConflict();.Вам также может понадобиться заменить все вхождения $ на jQuery.Сложность в том, что переменные часто определяются как $a_variable_name, замена переменных $ in приведет к ошибкам.

    Посмотрите, сможете ли вы найти версию tipy с уже внесенными правками noConflict.Также обратите внимание, что часто необходимо добавлять noConflict и заменять $ на jQuery для других сценариев jQuery, особенно если этот сценарий зависит от другого.

    Это разрешает конфликты, как я делал это в течение некоторого времени.Также обратите внимание, что если вы везде используете jQuery, эти изменения обычно не требуются.

  2. Последовательность загрузки файлов сценариев также важна, попробуйте переставить их.

  3. Выполнять сценарии только тогда, когда они необходимы.Другими словами, если определенный фрагмент кода вызывает конфликт, загрузите его со страницы, где он требуется, а не из заголовка, используя теги сценария.

2 голосов
/ 30 июня 2011

Попробуйте расположить ссылки на ваши скрипты:

1) jquery

2) jquery-ui

3) newsticker

и добавьте его в началостраницы перед вызовом любых методов, связанных с jquery.

Не уверен на 100%, будет ли это работать, но попробуйте.

Не знаю, какую версию newsticker вы используете, новзгляните на эту ссылку .

1 голос
/ 30 июня 2011

Возможно, вам потребуется объявить переменную.Потому что $ используется в других js-фреймворках, таких как прототип.так что просто поместите следующий скрипт в начало вашего скрипта.

var jQuery = jQuery.noConflict(); 
0 голосов
/ 01 ноября 2011

Я столкнулся с той же проблемой при использовании большого количества плагинов для моей веб-страницы.Самое простое решение - иметь объединенный файл со всеми файлами .js и иметь один заголовок.Также вы можете минимизировать (минимизировать инструменты, доступные онлайн) объединенный файл и просто включить мин версию.Это должно решить проблему.

Еще один способ - убедиться, что плагин доступен, прежде чем вызывать функцию в плагине.Попробуйте использовать getScript из jquery, чтобы убедиться, что оба плагина загружены, и выполнить вызовы функций плагина в обработчике успеха getScript

...