jQuery无法正常工作,可能与Prototype发生冲突?

时间:2013-01-23 01:28:55

标签: javascript jquery magento prototype

我很抱歉这个模糊的标题。

我正在为我公司的网站制作一个新主题,并且页面上有jQuery选项卡和滑块。

标签和滑块都不起作用 - 我不太清楚为什么。我继承了设计并简单地更改了主题 - 我认为它可能与正在加载的多个jQuery脚本有关 - 滑块抛出错误,方法.split()不存在,并且标签只是没有按照他们应该的方式工作。

3 个答案:

答案 0 :(得分:2)

Explosion Pills是对的 - 你应该使用jQuery.noConflict。首先导入jQuery,然后在导入Prototype之前插入行

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

如果你这样做,你的应用程序中你引用jQuery的其他地方,请jQuery(...)jQuery.而不是$(...)$.。它不应该搞乱你的脚本导入,除非你导入的那些脚本编写得很糟糕并且没有为自己定义$。

答案 1 :(得分:2)

你应该这样做:

<action method="addJs"><script>jquery/jquery.js</script></action>
<action method="addJs"><script>jquery/jquery.plugin.js</script></action>
<action method="addJs"><script>jquery/jquery.moreplugin.js</script></action>
<action method="addJs"><script>jquery/jquery.noConflict.js</script></action>

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

在page.xml布局中。

jquery.noConflict.js文件:

var jQuery = $.noConflict();

之后,您可以随意调用jQuery()函数。 顺序是:jquery - &gt; jquery插件 - &gt; jquery没有冲突 - &gt;原型

答案 2 :(得分:0)

我更喜欢使用以下代码段:

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

,它不会与Prototype冲突,并继续使用'$'来表示jQuery。 以下是一些更多信息: http://www.magentogarden.com/blog/using-jquery-in-magento-with-good-programming-practice.html