【问题标题】:jQuery widget has no method "extend"jQuery 小部件没有“扩展”方法
【发布时间】:2012-12-09 09:34:51
【问题描述】:

我正在开发一个包含许多 jQuery 和 jQuery UI 相关插件的 Wordpress 站点。一切似乎都运行良好,但是当我们将整个站点移至新域名时,我开始在 Chrome 控制台中看到以下错误:

未捕获的类型错误:对象函数 (b,c,d){var e=b.split(".")[0],f;b=b.split(".")[1],f=e+ "-"+b,d||(d=c,c=a.Widget),a.expr[":"][f]=function(c){return!!a.data(c,b)} ,a[e]=a[e]||{},a[e][b]=function(a,b){arguments.length&&this._createWidget(a,b)};var g=new c;g. options=a.extend(!0,{},g.options),a[e][b].prototype=a.extend(!0,g,{namespace:e,widgetName:b,widgetEventPrefix:a[e ][b].prototype.widgetEventPrefix||b,widgetBaseClass:f},d),a.widget.bridge(b,a[e][b])} 没有方法'extend'

这是 jQuery UI 1.9.3 中似乎导致此问题的行:

this.options = $.widget.extend( {},
this.options,
this._getCreateOptions(),
options );

无论我尝试做什么,我似乎都无法克服这一点。我正在使用正确的方法(或者我已经阅读过)通过使用 wp_enqueue_script() 并将 jquery 设置为 jquery-ui 的依赖项来添加脚本,并查看 HTML,jQuery 确实在 jQuery UI 之前加载。

如果有人对可能发生的事情有任何想法,我将不胜感激,这让我发疯了。

【问题讨论】:

  • 所有文件都加载正确了吗?
  • 发生在 jqueryui.js 的哪一行?
  • 看一个活生生的例子会很有帮助。
  • 我没有收到任何其他奇怪的错误或 404 或任何其他错误(它们都是从 Google 的脚本存储库加载的)。它报告此错误发生在此文件的第 568 行:ajax.googleapis.com/ajax/libs/jqueryui/1.9.2/…
  • 我会展示这个例子,但由于这是一个客户的网站,我不认为我可以在生产时分享它。

标签: javascript jquery wordpress jquery-ui typeerror


【解决方案1】:

这不是您的问题的答案,但为了说明,有时看起来您遇到了 jQuery 错误,而实际上您的自定义 javascript 出现错误。

如果您使用的是 Chrome,您可以打开控制台(工具 > Javascript 控制台)并旋转出现错误时打开的小箭头。这将显示导致错误的所有代码行。

看图:

通常,如果您查看列表,它会导致除 jQuery 之外的另一个 javascript。如果您单击右侧的黑色链接(即activity.php),如果它是javascript,它将打开违规行。

另一个问题(如果您使用的是 Wordpress)是您可能会加载 jQuery 两次。听起来您这样做是正确的,但是,您的一个插件可能没有。

编辑 你运行的是什么版本的 jQuery(对不起,误读了 jquery ui)

来自文档:Ninja Forms 使用 WordPress 附带的 jQuery(javascript 库)版本。这意味着如果您使用外部 jQuery 文件,或者另一个插件正在加载自己的 jQuery 版本,则可能会出现错误。例如,如果您使用 WordPress 3.3 或更高版本,Ninja Forms 预计您的站点将使用 jQuery 1.7 版本。如果您有一个主题或插件将其更改为早期版本的 jQuery,Ninja Forms 可能无法正常工作。

【讨论】:

  • 我知道这并没有太大帮助,但这里是错误的堆栈跟踪:i.imgur.com/ohYGJ.png 显然忍者表单库似乎是罪魁祸首,但导致错误的行看起来没有错误或任何东西(自从文件被移动后它没有改变)。
  • 这是ninja-forms-display中的一行:$("#ninja_form_overlay").dialog({height: 200,autoOpen: false,modal: true});
  • 是的,做到了。我手动加载了这些库的新版本,由于某种原因,忍者表单以前运行良好,但我认为插件已更新,这一定是出了问题。我删除了那些强制它使用包含的库的手动加载语句,一切都恢复正常。谢谢!
猜你喜欢
  • 2023-03-26
  • 1970-01-01
  • 2011-02-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多