magento используя jquery с noconflict - PullRequest
2 голосов
/ 29 ноября 2011

Я использую 2 скрипта jquery для своего магазина Magento.Один из этих скриптов, слайдер работает отлично, а другой не работает.

<script type="text/javascript">jQuery.noConflict();jQuery(function($){

function mycarousel_initCallback(carousel)
{
    // Disable autoscrolling if the user clicks the prev or next button.
    carousel.buttonNext.bind('click', function() {
        carousel.startAuto(0);
    });

    carousel.buttonPrev.bind('click', function() {
        carousel.startAuto(0);
    });

    // Pause autoscrolling if the user moves with the cursor over the clip.
    carousel.clip.hover(function() {
        carousel.stopAuto();
    }, function() {
        carousel.startAuto();
    });
};

jQuery(document).ready(function() {
    jQuery('#mycarousel').jcarousel({
        auto: 0,
        wrap: 'circular',
        animation: 600,
        scroll: 6,
        initCallback: mycarousel_initCallback
    });

    $('.block_cart_header').hover(function(){
        $('.cart_add_items').fadeIn(700);
    },
    function(){
        $('.cart_add_items').fadeOut(700);
    });


});

jQuery(document).ready(function() {
    jQuery('.dropdown').selectbox();
}); });</script>

Когда я удаляю jQuery.noconflict ();оба скрипта работают, но скрипт-прототип не работает.

Этот скрипт не работает:

jQuery(document).ready(function() {
jQuery('.dropdown').selectbox();}); });</script>

Ответы [ 4 ]

7 голосов
/ 29 ноября 2011

Вам необходимо заменить все $( на jQuery( и $. на jQuery. в связанных с jQuery функциях и плагинах.

например в вашем коде заменить

jQuery('.block_cart_header').hover(function(){
        jQuery('.cart_add_items').fadeIn(700);
    },
    function(){
        jQuery('.cart_add_items').fadeOut(700);
    });

Дополнительная информация

Вы можете изменить порядок запуска файла библиотеки. В page.xml измените порядок, как показано ниже

  1. jquery.js
  2. noconflict.js
  3. prototype.js Это позволит избежать ошибки в IE8.

Надеюсь, это поможет

2 голосов
/ 29 ноября 2011

Плагин selectbox, вероятно, использует $ для своих вызовов JQuery.Измените все $ в плагине selectbox на jQuery, и он должен работать.

Если нет, поместите ссылку на используемый плагин selectbox.

0 голосов
/ 27 августа 2013

Решение gowri сработало для меня, если проблема снова возникнет, вам необходимо подтвердить все js-файлы, которые вы могли пропустить, чтобы проверить js-файлы, и изменить их, как указано в «gowri», т. Е.

replace all $( into jQuery( and $. into jQuery.
0 голосов
/ 29 ноября 2011

Я думаю, что проблема в плагине, который не работает. Оставьте noConflict включенным, он действительно необходим для совместимости прототипа и jQuery. Проверьте, передаете ли вы правильно отформатированный HTML-объект в плагин. Возможно, он ожидает объект с какими-то определенными атрибутами, а их нет.

...