Добавление элементов в jQuery Accordion с помощью jquery
Я использую плагин JQuery для аккордеона, чтобы сделать аккордеон из некоторых данных. Затем я хочу, чтобы пользователь мог добавить больше данных в аккордеон. Я настроил аккордеон для правильной работы, затем я сделал функцию, которая добавляет "элемент списка" к аккордеону, который соответствует семантике аккордеона.
Можно ли "обновить" аккордеон, чтобы он работал с вновь добавленным элементом, не сохраняя новые данные в базе данных и не обновляя страницу?
Что-то вроде этого:
.accordion('refresh')
Или что-то вроде живого события, добавленного в jQuery 1.3, кто-нибудь понял?
5 ответов
Я не проверял это, но это, вероятно, должно работать: скажем, что у вас есть аккордеон с идентификатором #accordion
$('#accordion').append('<h3><a href="#">New Paragraph</a></h3><div><p>New data</p></div>')
.accordion('destroy').accordion();
В основном, просто уничтожьте и заново создайте аккордеон.
ОБНОВИТЬ:
С тех пор как этот ответ был написан, к виджету аккордеона был добавлен метод refresh(). Это может быть вызвано, вызывая:
$( ".selector" ).accordion( "refresh" );
Вы можете прочитать больше об этом методе здесь
Чтобы добавить новый раздел и сохранить старый активный:
var active = $('#accordion').accordion('option', 'active');
$('#accordion').append('<h3><a href="#">New Paragraph</a></h3><div><p>New data</p></div>')
.accordion('destroy').accordion({ active: active});
Как упоминалось выше Шахзадом, jQuery UI 1.10 сделал это проще; см. документацию
Возможно, вы захотите взглянуть на плагин LiveQuery: http://plugins.jquery.com/project/livequery
Позволяет добавлять события и привязки после загрузки DOM.
Так как я нуждался в работающем добавлении / редактировании / удалении элементов аккордеона, я взломал эту маленькую функцию javascript для этой цели.
h3 и div нужен уникальный идентификатор, который соответствует следующему соглашению
<h3 id="divname_hitm_<uniquenumber>"><h3>
соответствующему div нужно следующее
<div id="divname_ditm_<samenumber as h3"></div>
образец кода аккордеонного кода
<div id="divname">
<h3 id="divname_hitm_1><a href="#">Section 1</h3>
<div id="divname_ditm_1>
<p>Section 1 Payload</p>
</div>
<h3 id="divname_hitm_2><a href="#">Section 2</h3>
<div id="divname_ditm_2>
<p>Section 2 Payload</p>
</div>
</div>
повеселиться может быть, это помогает некоторым людям там!