如何在Magento 1.9.0.1 rwd主题上使用jQuery?

时间:2014-09-21 18:15:50

标签: javascript jquery magento magento-1.9.1

我注意到Magento 1.9.0.1 rwd主题现在包含jQuery库并使用" jQuery.noConflict();"关联" $ j"默认令牌。

首先,我想使用google CDN jQuery库而不是本地jQuery库。

第二,如何运行我的jQuery代码?

例如,我尝试插入minicart.phtml:

    .....
       $_cartQty = 0;
    }
?>


<script type="text/javascript">
    $j(document).ready(function() {
        $('#header-cart').hide();
    });
</script>


<a href="#header-cart" class="skip-link skip-cart <?php if($_cartQty <= 0): ?> no-count<?php endif; ?>">
    <span class="icon"></span>
    ........

另外,我尝试在app.js的末尾添加我的代码:

.....
};

$j(document).ready(function() {
    ProductMediaManager.init();
});

$j(document).ready(function() {
    $('#header-cart').hide();
});

但没有效果。哪里错了?如何在app / js文件夹中的单独文件中运行我的代码?

2 个答案:

答案 0 :(得分:1)

  

“首先,我想使用google CDN jQuery库而不是本地jQuery库。”

在提出简单问题之前,您应该进行更多研究,以下内容来自this postthis post。总的来说,我认为仅靠依赖第三方是不值得的。

在您的主题local.xml布局文件中添加此内容。

<default>
    <reference name="head">
        <action method="addItem"><type>skin_js</type><name>js/lib/jquery-1.10.2.min.js</name></action>
        <block type="core/text" name="google.cdn.jquery">
            <action method="setText">
                <text><![CDATA[<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script>window.jQuery||document.write('<script src="/skin/frontend/rwd/default/js/lib/jquery-1.10.2.min.js">\x3c/script>');</script>
<script>jQuery.noConflict();</script>]]></text>
            </action>
        </block>
    </reference>
</default>

  

“第二,如何运行我的jQuery代码?”

$j(document).ready(function() {
    $('#header-cart').hide();
});

在此您知道必须使用$j代替$,但您忘记了第二行!有很多方法可以改变它,

  1. 在任何地方使用$j

    $j(document).ready(function() {
        $j('#header-cart').hide();
    });
    
  2. 使用the function argument重命名$j

    $j(document).ready(function($) {
        // $ is different inside this function only
        $('#header-cart').hide();
    });
    
  3. 改为使用Prototype:

    // $j is alias for jQuery
    $j(document).ready(function() {
        // $ is Prototype alias for document.getElementById
        $('header-cart').hide();
    });
    

答案 1 :(得分:0)

为避免与prototype.js发生冲突,您需要使用jQuery代替$

例如,而不是:

$(document).ready(function(){
    // do something
});

写:

jQuery(document).ready(function(){
    // do something
});