我正在制作Magento扩展程序。当您尝试在Magento中使用jQuery时,Magento有一个已知问题,因为Magento使用Prototype库。
解决它的方法是将你的jQuery代码放在这样的冲突模式中......
jQuery.noConflict();
一旦我这样做了,它解决了我遇到JavaScript错误的90%的问题。但是我现在仍然有3个主要的JavaScript问题,我相信它们是相关的...
Uncaught TypeError: undefined is not a function
http://www.codedevelopr.com/screenshots/2014/2014-08-23_16-14-37.png
当我查看报告这些错误的行号时,我看到了这个......
第1168行jQuery(".acc-wizard").accwizard({
现在这个accwizard()
是一个从jQuery插件文件加载的函数。我已经验证了文件已加载并且在我的jQuery之后加载它并且在我为jQuery设置了no conflict模式之后。我不确定是否需要更改插件文件中的某些内容以使用无冲突模式或为什么它说它是未定义的?
与第1180行的simplecolorpicker()
相同。
我上传了包含accwizard()
jQuery插件的文件,大小约为14kb,可以在这里找到http://www.codedevelopr.com/screenshots/2014/acc-wizard-bs-3.js我认为在这里发布代码有点大。< / p>
有人可以帮我解决这些错误吗?似乎我尝试使用的任何jQuery插件都会导致上面这个未定义的错误?
更新
所以我一直在试验很多没有运气的东西......直到我尝试在我的扩展程序使用的实际模板页面中内联加载我的所有JS文件...一旦我这样做,一切正常没有这些错误。
这很令人沮丧,因为我更喜欢为我的JS提供单独的JS文件...而不是加载3个JS文件我甚至尝试将所有3个放入1个文件并加载该1个文件但我仍然得到JS错误。 ..当我复制那个包含所有3个文件的1个文件并将其直接放在模板文件中时...一切正常!这对我没有意义,请帮忙吗?
答案 0 :(得分:1)
您的答案中没有足够的背景来确定原因,但听起来您的网络浏览器会执行代码......
jQuery('foo').accwizard
BEFORE 它已经下载并初始化了定义accwizard
方法的插件。