Magento + jquery slider $未定义

时间:2011-06-07 08:51:22

标签: jquery jquery-ui magento

我正在将内容滑块集成到magento主题中,但是js存在一些问题。 我收到错误“$未定义”,然后我从网站上找到了一个解决方案,说明我应该添加这行“jQuery.noConflict();”进入我的jquery文件。

然后在home.phtml中,: -

<script type="text/javascript">
var $s = jQuery.noConflict();
    $s(document).ready(function(){
        $("#featured > ul").tabs({fx:{opacity: "toggle"}}).tabs("rotate", 5000, true);
    });
</script>

在我的page.xml中,这是我包含js

的方式
<action method="addJs"><script>jquery/jquery.js</script></action>
<action method="addJs"><script>jquery/jquery-ui.min.js</script></action>

<action method="addJs"><script>prototype/prototype.js</script></action> 

完成上述更改后,我收到错误“jQuery未定义”

欣赏任何建议。提前谢谢!

已编辑: 通过从CMS页面调用js解决此问题 - &gt;内容: -

<script type="text/javascript">// <![CDATA[
   var $j = jQuery.noConflict();  jQuery(document).ready(function($) { jQuery("#featured  ul").tabs({fx:{opacity:"toggle"}}).tabs("rotate", 5000, true); }); //  &gt;
// ]]></script>

在CMS页面 - &gt;设计,包括所需的js文件: -

<reference name="head">
  <action method="addItem"><type>skin_css</type><name>css/slider.css</name></action>
  <action method="addItem"><type>skin_js</type><name>js/jquery.min.js</name></action>
<action method="addItem"><type>skin_js</type><name>js/jquery-ui.min.js</name></action>
</reference>

但是,只有特定页面使用的是js而不是每个页面时,此方法才有用。 :)

4 个答案:

答案 0 :(得分:3)

实际上,有一个更好的替代Mathew的建议。

使用闭包来限制$的范围,在您的示例中,您需要更改以下代码:

$(document).ready(function(){
    $("#featured > ul").tabs({fx:{opacity: "toggle"}}).tabs("rotate", 5000, true);
});

对于诸如此类的事情:

jQuery.noConflict();
(function($) {
    $(document).ready(function(){
        $("#featured > ul").tabs({fx:{opacity: "toggle"}}).tabs("rotate", 5000, true);
    });
})(jQuery);

此外,您需要将这些addJs调用放入引用'head',以将它们放在HTML源代码中的正确位置。现在,它们可能在根块中。

答案 1 :(得分:1)

/template/page/html/head.phtml

的末尾插入以下代码
<script type="text/javascript">
    jQuery.noConflict();
</script>

在脚本文件中使用jQuery代替$。 您的代码看起来像

<script type="text/javascript">    
 jQuery(document).ready(function(){
          jQuery("#featured > ul").tabs({fx:{opacity:"toggle"}}).tabs("rotate", 5000, 
 true);
      }); 
 </script>

jquery 1.5.2v适用于magento。

希望这会对你有所帮助。

答案 2 :(得分:0)

您必须更改脚本中$的所有实例才能使用jQuery()。有关更多信息,请参阅文档:

http://api.jquery.com/jQuery.noConflict/

或者,您可以将mXperts插件用于作业:

http://www.magentocommerce.com/magento-connect/mxperts/extension/1619/mxperts--jquery-base

答案 3 :(得分:0)

您可以使用var $j = jQuery.noConflict();。此代码包含在您的脚本中,并使用$j代替$