magento使用jquery与noconflict

时间:2011-11-29 11:52:27

标签: jquery magento prototypejs conflict

我正在为我的Magento商店使用2个jquery脚本。其中一个脚本,一个滑块完美运行,另一个不起作用。

<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 个答案:

答案 0 :(得分:7)

您需要在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中的错误。
  4. 希望这有帮助

答案 1 :(得分:2)

selectbox插件可能正在使用$ for它的JQuery调用。将selectbox插件中的所有$更改为jQuery,它应该可以正常工作。

如果没有,请为使用过的selectbox插件添加一个链接。

答案 2 :(得分:0)

我猜想那个不起作用的插件就是问题所在。保持noConflict,原型和jQuery之间的兼容性确实需要它。检查是否将格式正确的HTML对象传递给插件。可能它期望具有某些特定属性的对象不存在。

答案 3 :(得分:0)

gowri解决方案对我有用,如果问题再次存在,那么你需要确认你可能遗失的所有js文件,检查js文件并按“gowri”所述更改它们,即:

replace all $( into jQuery( and $. into jQuery.