这是一款基于Themeforest的Acumen主题的Magento商店。
看似突然出现,jquery的东西现在无法正常工作。 Acumen通过magento静态块加载jquery,并且没有触及任何一个。
昨天我正在努力添加jquery.clearfield.js插件,以便将这些功能添加到我们的表单中。我没有修改核心文件。我通过另一个静态块加载了clearfield插件,并将静态块添加到我们的联系CMS页面。
我当时登录并且正在自动填充名称/电子邮件的登录值,并且在某些时候我作为客户注销以在未登录时测试字段值。
由于jquery冲突我无法登录。我已经完成了代码,我似乎无法找到任何会导致这种情况发生变化的内容,而且我没有修改过任何核心或主题文件。
如果您在任何页面上查看source / inspect元素,您将看到prototype和jquery错误消息。
任何想法/见解都会有所帮助。
感谢。
答案 0 :(得分:10)
如果要在local.xml中包含jquery且不包含冲突代码,请使用:
<default>
<reference name="head">
<block type="core/text" name="google.cdn.jquery">
<action method="setText">
<text><![CDATA[<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script><script type="text/javascript">jQuery.noConflict();</script>]]>
</text>
</action>
</block>
</reference>
</default>
干杯!!
修订版2:您可能希望编辑page.xml并在其中插入jquery.js和noConflict,因为page.xml是在local.xml之前加载的。或者,您可以使用local.xml删除所有以前的Prototype js调用,然后重新添加它们。我发现编辑page.xml更容易。
另外,我无法将Action setText用于“var jQuery = jQuery.noConflict();”,因此我自己创建了一个单独的js文件。不是很好,但它是在加载主jQuery js文件之后加载的(在Prototype之前)
答案 1 :(得分:4)
更新:不要再使用它了,请参阅上面@MagePsycho的答案。
这不是jQuery和Prototype冲突的问题,而是当你调用jQuery.noConflict()时jQuery实际上还没有加载。
在你的源代码中,“jQuery.noConflict()”调用是正确的,但jQuery本身通过google api在页面的最末端(页脚下方)加载。
我的建议是放弃google api,通过XML在本地加载jQuery
<action method="addItem"><type>skin_js</type><name>js/jquery-1.x.x.min.js</name></action>
并在jquery-1.x.x.min.js本身结束之前嵌入了一个jQuery.noConflict()调用。
答案 2 :(得分:1)
在一起运行jQuery和Prototype时,您需要运行“无冲突”模式。这将jQuery的钩子从“$”重新映射到“jQuery”,允许Prototype继续使用“$”。
如果插件我们使用“$”,它将使用Prototype的功能,并可能会崩溃。您可能需要手动编辑插件并将“$”替换为“jQuery”。