#jquery #wordpress #accordion
#jquery #wordpress #аккордеон
Вопрос:
Ошибка консоли:
TypeError: $(...).accordion is not a function
Jquery в файле calljq.js
в worpdress (дочерняя тема twentytwelve):
$(function() {
$('#st-accordion').accordion();
});
Я бы хотел, чтобы аккордеон облегчение прокрутки на этой странице:
http://www.lab-360.it/test-acs/?attachment_id=67
Нажмите «Комментарий», и jquery покажет прокрутку комментариев в верхней части страницы.
Вот источник :
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js?ver=3.9.1" type="text/javascript" style=""></script>
<script src="http://www.lab-360.it/test-acs/wp-content/themes/twentytwelve/js2/jquery.accordion.js?ver=3.9.1" type="text/javascript"></script>
<script src="http://www.lab-360.it/test-acs/wp-content/themes/twentytwelve/js2/jquery.easing.1.3.js?ver=3.9.1" type="text/javascript"></script>
<script src="http://www.lab-360.it/test-acs/wp-content/themes/twentytwelve/js2/calljq.js?ver=3.9.1" type="text/javascript"></script>
Я пробовал таким образом:
$('#st-accordion').accordion();
В консоли все в порядке, но аккордеон и прокрутка не работают.
Это конфликт?
Комментарии:
1. является ли аккордеон библиотекой пользовательского интерфейса jQuery?
2. я не знаю, но он отлично работает в другом WordPress: raccontolimpresa.it/?p=331
3. Вероятно, это не так. Таким образом, довольно сложно определить, в чем проблема :/
4. Если в html я наконец помещу все 4 скрипта jquery и если я деактивирую jquery-migrate.min.js и jquery.js в wp-includes/js/jquery это работает для облегчения аккордеона, но в других js нет…
5. может быть, я решил: только под заказ заголовка с JS полезно: <?php include (get_stylesheet_directory() . ‘/new-header.php’); ?> Менее интересен, чем solutiion страницу с чистым кодом, но он работает 🙂
Ответ №1:
Я думаю, что корень проблемы заключается в том, что у вас нет действия accordian, заключенного в функцию document ready, как показано ниже…
jQuery(document).ready(function($) {
$('#st-accordion').accordion();
});
Это гарантирует, что JS не запускается до тех пор, пока страница не загрузится, и поэтому все html и другие объекты js доступны. Это также соответствует тому, что WP говорит вам делать, потому что они используют jQuery без конфликтов. Более подробная информация об этом находится примерно на полпути вниз по следующей странице. http://codex.wordpress.org/Function_Reference/wp_enqueue_script
Кроме того, и это действительно может не иметь значения, но похоже, что вы включаете на страницу 2 разные версии jQuery. 1.6.3 и 1.11. Обычно я советую просто использовать тот, который поставляется с WordPress, но если вам нужен более старый, я бы удалил более новый вызов.