Как я могу удалить JQuery конфликт, когда они вызываются на той же странице из-за функции записи...?

Я новичок... я добавил два разных jQuery... один всплывающий, который вызывает файл (ajax), а другой слайдер на странице...?

я пробовал "jQuery.noConflict();" но они работают только для двух разных библиотек...?

здесь я использую только JQuery....

вот код...

<script>
    /* calls the pop-up */
    $(document).ready(function(){

        $(".example5").colorbox();
    });
    /* calls the slider */
        $(function(){
        $('.selecter').mobilyselect({
            collection: 'all',
            animation: 'absolute',
            duration: 500,
            listClass: 'selecterContent',
            btnsClass: 'selecterBtns',
            btnActiveClass: 'active',
            elements: 'li',
            onChange: function(){},
            onComplete: function(){}
        });
    });

</script>

`

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

может быть, это связано с функцией записи... но я не знаю, как ее решить...?

благодаря тебе...

4 ответа

Решение

Просто объедините два:

$(document).ready(function(){

    $(".example5").colorbox();

    $('.selecter').mobilyselect({
        collection: 'all',
        animation: 'absolute',
        duration: 500,
        listClass: 'selecterContent',
        btnsClass: 'selecterBtns',
        btnActiveClass: 'active',
        elements: 'li',
        onChange: function(){},
        onComplete: function(){}
    });
});

Я бы просто поместил их в одну и ту же функцию:

$(document).ready(function(){

        $(".example5").colorbox();

        $('.selecter').mobilyselect({
            collection: 'all',
            animation: 'absolute',
            duration: 500,
            listClass: 'selecterContent',
            btnsClass: 'selecterBtns',
            btnActiveClass: 'active',
            elements: 'li',
            onChange: function(){},
            onComplete: function(){}
        });
});

Есть ли какая-то причина, по которой вы не можете этого сделать?

jQuery.noConflict() используется, когда две разные библиотеки хотят контролировать $ (как, скажем, jQuery и Prototype... или даже две разные версии jQuery, если вы хотите этого по какой-то причудливой причине). Это не нужно, когда у вас есть два разных скрипта, использующих jQuery; по факту, jQuery.noConflict() делает так, чтобы $ не значит jQuery больше, и обычно будет нарушать любой сценарий, который ожидает, что сможет использовать $ (как это делают оба ваших обработчика событий). jQuery объединит обработчики так, что один будет работать за другим без необходимости делать что-то еще.

Оба сценария должны работать, если вы удалите jQuery.noConflict(), Или, как уже упоминалось другими, объединить два в один обработчик. Они действительно не должны быть отделены в любом случае. Но тем не менее, оба должны работать нормально, если (1) ваш синтаксис правильный, (2) плагины загружены и (3) вы используете их правильно. См. http://jsfiddle.net/BeRLB/ для примера двух прекрасно взаимодействующих обработчиков событий.

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

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

Вы можете вызывать несколько функций jQuery внутри $(document).ready(function(){}); функция:

$(document).ready(function(){

        $(".example5").colorbox();

        $('.selecter').mobilyselect({
            collection: 'all',
            animation: 'absolute',
            duration: 500,
            listClass: 'selecterContent',
            btnsClass: 'selecterBtns',
            btnActiveClass: 'active',
            elements: 'li',
            onChange: function(){},
            onComplete: function(){}
        });
});
Другие вопросы по тегам