【问题标题】:Multiple jQuery includings causing fancybox to break?多个 jQuery 包括导致fancybox 崩溃?
【发布时间】:2012-11-06 08:30:24
【问题描述】:

我不确定这里发生了什么,我有点困惑。

这是我目前正在处理的页面:http://tinyurl.com/a8yuzdt

当您访问该页面时,一切正常,对吧?所有脚本运行良好!除了fancybox jquery 插件,它给了我错误:

Uncaught TypeError: Object [object Object] has no method 'fancybox'

它似乎由于某种原因没有加载。我不知道为什么。我尝试检查是否正确加载了 jQuery(也许在 jquery 或其他东西之前包含了 fancybox 脚本),并发现我在每次加载时都包含了 两个 的 jquery 实例。第二个包含来自 wordpress,但我认为它会自动包含 jQuery。

问题是,如果我删除我自己的 jquery 包含,没有任何效果!如果我在控制台中运行$,我会得到undefined。如果我运行jQuery,我会得到这个:

function (a,b){return new e.fn.init(a,b,h)}

所以我猜...它有点工作,但前提是我使用jQuery 而不是$?自己查,去页面,在源码中搜索jquery

有什么想法可以解决这个问题吗?

【问题讨论】:

  • 你在哪里包含 jquery.fancybox-1.3.4.js ?

标签: jquery wordpress include fancybox multiple-instances


【解决方案1】:

如果你包含了 jQuery,那么一些插件(例如,fancyBox)和另一个 jQuery,那么之前加载的所有插件都将丢失。

编辑。我检查了你的页面,发现

  1. 实际的错误信息是-TypeError: $ is not a function

  2. 这是因为您的 jQuery 运行到“noConflict”模式。由于某些原因,您的 jQuery 文件的最后一行是 - jQuery.noConflict();

因此,您要么必须使用 jQuery 而不是 $,要么删除 jQuery.noConflict(); 行。

【讨论】:

  • 但事实并非如此。两个 jQuery 都包含在页眉中(中间或上面没有脚本),我的脚本包含在页脚中(包括fancybox),所以它应该可以正常工作吗?看看源码,fancybox 和我的其他脚本都在 theme.js 里面。
  • @qwerty : 您在 fancybox 插件之前包含了 fancybox init .... 将包含移到顶部,将 init 移到底部
  • 你指的是theme.js里面的代码吗?如果是这样,它不应该无论如何都可以工作,因为即使fancybox插件代码在init之下,它也会在文档加载时直接运行(它不会等待它完成加载),这与在之后运行的init代码不同文件已加载。对吗?
  • 啊,现在看到你的编辑了!是否可以禁用 noConflict()? 编辑问题是wordpress会自动加载其中有noConflict()的jquery文件,所以据我所知我没有修改它的能力。
  • 根据 wordpress 文档 (codex.wordpress.org/Function_Reference/…) 他们有目的地把它放在那里。我尝试将代码包装在jQuery(document).ready(function(){}); 中,但这不起作用。最后,我尝试用jQuery 替换所有$ 符号,现在它似乎工作了。缺点是如果脚本中有任何实际的$ 符号(作为字符串),它现在已被 jQuery 替换。啊,无论如何,它有效,谢谢!
猜你喜欢
  • 1970-01-01
  • 2021-09-02
  • 1970-01-01
  • 2020-07-26
  • 2011-09-29
  • 2012-06-14
  • 1970-01-01
  • 1970-01-01
  • 2018-01-23
相关资源
最近更新 更多