【问题标题】:magento using jquery with noconflictmagento 使用 jquery 没有冲突
【发布时间】:2011-11-29 11:52:26
【问题描述】:

我正在为我的 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>

【问题讨论】:

  • 控制台是否出现任何错误?
  • 好问题,这就是我得到的:Uncaught TypeError: Object # has no method 'attr'

标签: jquery magento prototypejs conflict


【解决方案1】:

你需要在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】:

    选择框插件可能使用 $ 作为它的 JQuery 调用。将选择框插件中的所有 $ 更改为 jQuery,它应该可以工作。

    如果没有,请放置一个链接到使用的选择框插件。

    【讨论】:

    • 这不是解决方案,插件应该在 noConflict 模式下工作
    • @Leon -> 尝试用 jQuery 替换所有出现的 $
    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

      gowri 解决方案对我有用,如果问题再次存在,那么您需要确认所有已使用的 js 文件,您可能会丢失检查 js 文件并按照“gowri”所述进行更改,即:

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

      【讨论】:

        猜你喜欢
        • 2012-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-12-26
        • 2013-05-28
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多