2012-01-26 3 views
2

У вас возникла проблема с скриптом аккордеона, аккордеон работал, когда я работал с ним с прямым html, но теперь, перейдя на Wordpress, аккордеон прекратил работать.#accordion не является функцией

Вот мой код

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.min.js"></script> 
    <script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.min.js"></script> 

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript"></script> 
    <script> 
    $(document).ready(function() { 
    $("#accordion").accordion(); 
    }); 
    </script> 
<?php wp_head(); ?> 

и HTML:

  <div id="accordion"> 
<div class="button"><a href="#">Infrastructure</a></div> 
    <div><?php 
      if (function_exists('iinclude_page')){ 
       iinclude_page('sectors/infrastructure'); 
      }?> 
      </div> 
    <div class="button"><a href="#">Housing</a></div> 
    <div><?php 
      if (function_exists('iinclude_page')){ 
       iinclude_page('sectors/housing'); 
      }?></div> 
       <div class="button"><a href="#">Education</a></div> 
    <div><?php 
      if (function_exists('iinclude_page')){ 
       iinclude_page('sectors/education'); 
      }?></div> 
       <div class="button"><a href="#">Health</a></div> 
    <div><?php 
      if (function_exists('iinclude_page')){ 
       iinclude_page('sectors/health'); 
      }?></div> 
</div> 

Я действительно не понимаю эту проблему, так как он работал в прямой HTML. Я даже попытался удалить функцию include с прямым текстом, и он все еще не работает?

Любые идеи? Других объектов jquery не существует.

+0

Есть ли разница между html в исходном коде и html, которые вы видите при просмотре источника в браузере? плагины, которые делают оптимизацию, попытаются выжать ненужные разрывы строк. если general всегда помещает комментарий html в пустые теги (сценарий или иначе). –

+0

Как и http://stackoverflow.com/questions/14898071/jquery-ui-typeerror-accordion-is-not-a-function?rq=1 – chuckfinley

ответ

12

Вы загрузки JQuery дважды (1,5 с последующим 1.7.1), и загрузка JQuery UI после загрузки 1.5, но перед загрузкой 1.7.1. Итак, вот что происходит:

  1. загружен jQuery 1.5.

  2. Пользовательский интерфейс jQuery загружается и прикрепляется к объекту jQuery, который существует в этой точке.

  3. Загружается jQuery 1.7.1, полностью заменяя объект jQuery.

  4. Ваш код работает, используя объект (1.7.1) jQuery, с которым пользовательский интерфейс jQuery не добавил свою доброту.

Если вы загрузите jQuery только один раз и убедитесь, что вы загрузили пользовательский интерфейс jQuery после этого, он будет работать.

+1

Это именно то, что я хотел сказать;) Спасибо за объяснение * Зачем*. – thirtydot

+0

Спасибо, это так странно, потому что я скопировал и вставил код с самого веб-сайта jquery на странице аккордеона, которая включала 2 версии в коде! – Amy

+0

@ Ами: Рад, что помогло! Я не вижу две версии jQuery, загружаемые на [страницу аккордеона] (http://jqueryui.com/demos/accordion/) на jqueryui.com. –

2

Вы включаете jQuery дважды, возможно, это проблема?

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.min.js"></script> 
.. 
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript"></script> 
0

Можете ли вы показать мне полный html, когда вы запустите его на Wordpress. Я думал, что, возможно, на страницах включения есть некоторые закрытые теги, которые могут испортить аккордеон.

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.min.js"></script> 
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.min.js"></script> 

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

И старайтесь не вставлять jQuery дважды.

+0

У него есть точка, так как это работает отлично без тегов php: http://jsfiddle.net/zd6Hg/ – gideon

+0

@gideon Я сделал ту же проверку :-) http://jsfiddle.net/JF8WY/ Но Я хочу, чтобы html с Wordpress включал – albertopriore

+0

ах. Да, я задавался вопросом, почему кто-то с этого момента был очень прав, поэтому я +1 :) – gideon

Смежные вопросы