我正在开发 Magento 扩展。当您尝试在 Magento 中使用 jQuery 时,Magento 有一个已知问题,因为 Magento 使用 Prototype 库。
解决方法是将 jQuery 代码置于无冲突模式,如下所示...
jQuery.noConflict();
一旦我这样做了,它就解决了我遇到的 90% 的 JavaScript 错误问题。然而,我现在仍然有 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 的无冲突模式后加载。我不确定插件文件中的某些内容是否也需要更改才能使用无冲突模式或为什么要更改是说它未定义吗?
与第 1180 行 simplecolorpicker()
的情况相同。
我已经上传了包含 accwizard()
jQuery 插件的文件,它的大小约为 14kb,可以在此处找到 http://www.codedevelopr.com/screenshots/2014/acc-wizard-bs-3.js我认为在这里发布该代码有点太大了。
任何人都可以帮助我解决这些错误吗?看来我尝试使用的任何 jQuery 插件都会导致上面这个未定义的错误?
<小时/>更新
所以我一直在尝试很多事情,但没有运气......直到我尝试将所有 JS 文件内联加载到我的扩展使用的实际模板页面中......一旦我这样做,一切都有效没有这些错误。
这很令人沮丧,因为我更喜欢为我的 JS 提供单独的 JS 文件...而不是加载 3 个 JS 文件,我什至尝试将所有 3 个文件放入 1 个文件中并加载该 1 个文件,但我仍然收到 JS 错误。 ..现在,当我复制包含所有 3 个文件的 1 个文件并将其直接放入模板文件中时...一切都完美运行!这对我来说毫无意义,请帮忙?
最佳答案
您的答案中没有足够的上下文来查明原因,但听起来您的网络浏览器执行了代码...
jQuery('foo').accwizard
之前它已经下载并初始化了定义accwizard
方法的插件。
关于javascript - 未捕获的类型错误 : undefined is not a function when using a jQuery plugin in Magento,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25466046/