#jquery #user-interface #accordion
#jquery — jquery — запрос #пользовательский интерфейс #аккордеон #jquery
Вопрос:
Как я могу отключить определенные вкладки в jQuery UI accordion()
, чтобы пользователь не мог щелкнуть, чтобы открыть содержимое вкладки. Допустим, я хочу отключить вторую вкладку в примере ниже.
Ответ №1:
Возможно, я ошибаюсь,
но если я добавлю класс «ui-state-disabled» в нужный заголовок, заголовок / вкладку больше нельзя будет выбрать.
Я работаю с:
jquery-ui-1.10.3 и jquery-1.7.1
Комментарии:
1. Я тоже этим пользуюсь :-). Работает как шарм.
Ответ №2:
В 1.8.x нет комплексного способа сделать это.
В версии 1.9 (бета-версия доступна на момент написания этой статьи) beforeActivate
событие выглядит так, как будто вы можете обработать и вернуть false
, чтобы предотвратить активацию. Предполагая, что вы установили .data('enabled', false)
в заголовке отключенного раздела, вы могли бы сделать что-то вроде следующего в 1.9:
$('.ui-accordion').bind('accordionchangestart', function(event, ui) {
if(ui.newHeader and !ui.newHeader.data('enabled')) {
return false;
}
// fall through activation happens as normal
});
Комментарии:
1. Спасибо, но мне это немного непонятно. Что такое disabled_header. Можете ли вы выполнить это по ссылке jsfiddle, которую я предоставил выше.
2. disabled_header — это просто заполнитель для некоторого индикатора, который вы хотите отключить в заголовке. Это может быть класс, указывающий состояние (
ui.newHeader.hasClass('disabled')
) или какое-либо состояние, сохраняемое в переменных Javascript. Я просто хотел быть уверенным , что вы знали, что значение return false означаетfalse
, а не"false"
.3. Возможно, вместо этого вам следует рассмотреть виджет вкладок jQueryUI, поскольку отключенные вкладки являются встроенной опцией.
$('#tabs').tabs('disable', tab_id_or_index)
и$('#tabs').tabs('enable', tab_id_or_index)
4. возврат false не останавливает открытие accordion
5. Вероятно, я читал код для 1.9, который позволяет отменить событие accordion changestart: github.com/jquery/jquery-ui/blob/master/ui / … В 1.8 нет: github.com/jquery/jquery-ui/blob/1-8-stable/ui /…
Ответ №3:
Я вставляю JSFriddle с примером управляемого навигационного аккордеона. Это означает, что пользователь не может пропускать шаги или свободно перемещаться по аккордеону, но только с помощью жестко запрограммированных кнопок, которые могут быть активированы или размещены jQuery. Надеюсь, это поможет. https://jsfiddle.net/moriz/rvuwze6s
В основном js выглядит следующим образом:
$(function() {
$("#accordion").accordion({
disabled: true
});
});
function operateAccordion(tabNumber) {
$("#accordion").accordion("option", "active", tabNumber);
}
И кнопки должны выглядеть следующим образом:
<a href="javascript:operateAccordion(1)">Next step</a>
Примите во внимание, что части аккордеона нумеруются начиная с 0. Таким образом, эта кнопка может использоваться для перехода назад или вперед в навигации.