Есть ли способ заставить аккордеоны пользовательского интерфейса jQuery закрываться с помощью CSS до тех пор, пока страница не завершит загрузку? Мы используем его в системе управления контентом, и каждая страница загружается довольно долго. jQuery не срабатывает до тех пор, пока страница не загрузится, но в этот момент все аккордеоны уже развернуты. Они закрываются после загрузки страницы, но мне кажется, что пользователей смущает то, что появляется гигантский список вещей, а затем исчезает.
Закрытие аккордеонов пользовательского интерфейса jQuery с помощью CSS
Ответы (5)
В самом вызове .accordion({ ... })
есть опция:
.accordion({ active: false, collapsible: true });
Параметр active: false
делает его закрытым при создании, а параметр collapsible: true
позволяет повторно закрыть его после открытия.
$(document).ready()
?
- person JacobTheDev; 16.03.2012
$(function(){ });
и все будет в порядке.
- person Joshua M; 16.03.2012
$(document).ready()
.
- person Milimetric; 16.03.2012
Опции показывают, как инициализировать аккордеон со всеми закрытыми вкладками. См.: http://jqueryui.com/demos/accordion/#option-active. Это означает, что код инициализации будет таким:
$( ".selector" ).accordion({ active: false, collapsible: true });
Следуя настройке из документации jQuery, вы можете просто поместить <div style="display: none">
в div содержимого под заголовками h3. Это скроет весь контент в аккордеоне во время загрузки страницы.
Вы можете установить его так:
.accordion-body{
display: none;
}
Я предполагаю, что аккордеон где-то вызовет $.show (или аналогичный), поэтому вам не нужно будет беспокоиться о его повторном отображении. Опять же, это предположение, поэтому, если я ошибаюсь, вы снова делаете его видимым, используя
$('.accordion-body').css('display', 'block');
$('#accordion').accordion();
Но если вы вызываете .accordion()
при загрузке dom, вы также можете попробовать запустить его раньше, используя .load:
$('#accordion').load(function(){
$(this).accordion();
});
Вы можете попробовать что-то вроде этого:
В своем CSS примените стили к селектору, который вы используете для вызова аккордеона:
.accordionSelector > div { display:none; }
Затем измените display
обратно на block
после загрузки jQuery:
$(".accordionSelector").accordion({...}).children("div").css("display","block");