Открытое поле таксономии в фильтрах представлений
У меня есть поле таксономии в моем представлении в фильтрах, и я сделал его доступным для пользователей с типом выбора "выпадающий список" вместе с "Показывать иерархию в раскрывающемся списке", как указано.
Я также использую Улучшенные открытые фильтры (BEF) модуль, в настройках которого я выбрал опцию отображения открытого фильтра в виде "вложенных флажков/переключателей".
Также в разделе дополнительные параметры в настройках BEF я выбрал "Добавить вложенный выбор все/нет", чтобы если выбран родительский термин таксономии, то все дочерние термины таксономии также должны быть выбраны, и наоборот. Но эта вещь работает неправильно, после выбора родительского термина все дочерние термины не выбираются, и после выбора всех дочерних терминов родительский термин по умолчанию не выбирается.
Может ли кто-нибудь предложить идеи, как заставить это работать должным образом. заранее спасибо!!
1 answers
Решена с помощью следующего кода jQuery:-
$('.bef-tree input:checkbox').click(function() {
var $this = $(this);
if ($this.is(':checked')) {
// Check all child checkboxes
$this.closest('li').find('input:checkbox').prop('checked', true).change();
// If all siblings are checked, the also check the parent term
if ($this.closest('li').siblings('li').find('input:checkbox[checked="true"]').length
== $this.closest('li').siblings('li').find('input:checkbox').length
) {
$this.closest('li').parent().closest('li').find('input:checkbox').prop('checked', true).change();
}
}
else {
// Uncheck all child checkboxes
$this.closest('li').find('input:checkbox').prop('checked', false).change();
// Uncheck all parent checkboxes of this element
$this.parentsUntil('ul.bef-tree').filter('li').each(function() {
// NOTE: "this" is no longer the closure variable, but the filtered
// li elements we selected and are iterating through.
$(this).find('input:checkbox:first').prop('checked', false).change();
});
}
});