【问题标题】:jQuery No Conflict Wrapper Not WorkingjQuery No Conflict Wrapper 不工作
【发布时间】:2016-03-12 01:48:51
【问题描述】:

我在 WordPress 中遇到了可怕的 Uncaught TypeError: undefined is not a function 错误。我很确定我已经正确地将我的 jQuery 脚本排入队列(它在页脚中正确显示),并且我在代码开头使用了以下无冲突包装器:jQuery(document).ready(function($) {

我尝试用 jQuery 替换所有 $ 变量。我还定义了var $j = jQuery; 并用$j 替换了所有$ 变量。

页面上还有其他由主题生成的 jQuery 脚本正在运行(嵌入的,而不是排队的),因此可能存在潜在的冲突,但我不确定如何调试。

任何帮助表示赞赏。如果有帮助,我可以提供该网站的链接。

编辑

我之前在 jQuery UI Widgets 插件中让该脚本完美运行,但该插件似乎导致了严重问题(使我的网站崩溃)。所以我禁用了插件,从那以后我就无法让脚本工作了。

【问题讨论】:

  • 确保您的脚本排在 jQuery 脚本之后。
  • 尝试将jQuery 库置于noConflict() 模式,只是为了测试:var $ = jQuery.noConflict(); 在加载您的jQuery 库之后。
  • Fabricio,如果我理解正确的话,我已经做到了。 jQuery 在第 828 行调用,我的脚本在第 1007 行调用。
  • bodi0:我应该在脚本开头还是在其他地方这样做?

标签: javascript jquery wordpress


【解决方案1】:

看起来不太对劲。试试这个

(function($) {

  $(document).ready(function() {

    console.log("dom is ready");

  });

})(jQuery);

【讨论】:

  • 谢谢,麦克克。我尝试了几种排列方式,包括剥离内部无冲突包装器,但没有运气。它仍然不想识别 $ 变量。
  • 完美...解决了我的问题...我在做 $(function ($) {.... 不好。
【解决方案2】:

你可以试试这个:

var j = jQuery.noConflict();
j(document).ready(function () {
  ...
  //replacing all Dollar Signs with the j
});

这对我有用

【讨论】:

  • 谢谢,我试过了,但我无法让它工作。我真的很困惑。我有其他 jQuery 工作得很好,但不是这个。现在我已经回到从插件运行它,它正在工作,但我希望有一个更清洁的解决方案。
猜你喜欢
  • 2011-03-25
  • 1970-01-01
  • 2017-03-10
  • 2018-09-15
  • 2011-08-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-21
相关资源
最近更新 更多