对象不支持属性或方法'accordion'

时间:2015-11-13 15:30:12

标签: javascript jquery css accordion jquery-ui-accordion

现在我非常困惑。我们的网站已经有一年的jQuery手风琴,没有任何麻烦。它在大约一天前工作正常。然后,在没有任何改变的情况下,手风琴不再在IE11和最新的Firefox中运行。但是,最新的Chrome和Safari似乎正确显示了该网站。我们网站的几乎每一页都使用手风琴;这是其中之一:

http://www.americanaccents.com/napkin-color-tradition.html

在IE中运行F12开发者工具,我看到消息“对象不支持属性或方法'手风琴'。”违规行代码(具体来说,第三行)是:

 <script>
  $(function() {
    $( "#Accordion1" ).accordion({
      heightStyle: "content",
      autoHeight: false
    });
  });
 </script>

知道这里发生了什么吗?这是一个优先考虑的问题,但我不知道还能在哪里转。

2 个答案:

答案 0 :(得分:3)

我发现很难相信这种情况发生了“没有任何改变[你]的结果。”

your head tag

你已经加载了jQuery总共三次。加载你的jQuery手风琴后,三个中的两个来了。所有这些都是在SpryAccordion之后。当加载像jquery.ui.accordion这样的插件时,它会将自身附加到jQuery对象 - $。当您加载另一个jQuery脚本时,$将重置为该脚本的实例,从而消除该插件。

如果没有改变,这几乎完全不可能。有人在head的末尾添加了两个jQuery提取(以及其他重复的内容)。如果此内容来自第三方服务,您应该尽一切力量消除这些远程依赖项。将这样的代码动态地拖入您的网站是非常危险的,因为您可以看到它现在正在破坏您的网站。

删除所有重复的jQuery,或确保您的手风琴插件在最后一个之后加载。

顺便说一下,问题应该是duplicate the problem in the question内容。我创建了一个截图,让这个问题在较长时期内对其他人有用,但它仍然是一个很糟糕的内容。没有人在将来寻求帮助应该去你的网站了解问题。

答案 1 :(得分:1)

你有: jQuery库版本:jQuery v1.11.1 | (c)2005年,2014年

您使用的是手风琴库:手风琴版:&#34; 1.10.4&#34; 1.10.4(遗留,对于jQuery1.6 +)

您正在加载

<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

两次。

和这个

<script type="text/javascript" src="http://vds.sage.net/pluginsupport/highslide/highslide-full.packed.js"></script>

两次和其他一些东西。

在您提出

请求后加载jQuery手风琴
<script src="jQueryAssets/jquery-1.11.1.min.js" type="text/javascript"></script>

BUT !!然后再重新加载jQuery库两次。你正在覆盖已经扩展的jQuery对象,并删除你的

中的jQuery UI手风琴和其他jQuery UI优点
<script src="jQueryAssets/jquery.ui-1.10.4.accordion.min.js" type="text/javascript"></script>

另外: http://api.jqueryui.com/1.10/ 他们敦促你升级。 - 在大型应用程序中并不总是一个好主意,似乎1.9的jQuery有一些重大变化。

希望这会有所帮助..

带走: 清理你的HTTP脚本请求,这应该可以解决你的问题