【发布时间】:2017-12-18 13:25:54
【问题描述】:
我正在使用bootstrap-multiselect 为用户提供两个关键菜单的出色控制器。我的第一个菜单叫做groups,另一个叫做queues。队列中的每个选项都有一个 HTML5 数据属性(即 data-group="X",其中 X 是组值)
当用户从groups 菜单中选择一个选项/组时,我想在queues 菜单中查找并隐藏每个队列/选项,其中data-group 不等于组菜单中的选定组。
确定需要隐藏/显示的队列/项目后,我尝试使用.show() 和.hide() 扩展。然后我尝试使用.addClass('hidden') 和.removeClass('hidden') 方法,但没有什么对我有用。
如何使用bootstrap-multiselect 即时显示/隐藏项目?
这是我的代码
$(function () {
var queueGroupIds = $('#QueueGroupIds');
var queueIds = $('#QueueIds');
queueGroupIds.multiselect({
nonSelectedText: 'Select group(s)',
onChange: function (option, checked, select) {
var groups = queueGroupIds.find('option:selected');
if (groups.length == 0) {
//When none of the groups are selected, show all queues!
queueIds.find('option').each(function (i, q) {
$(q).show();
});
}
var queueToDeselect = [];
//loop over every select option "if any are selected"
groups.each(function (index, grp) {
var group = $(grp);
// loop over every queue option
queueIds.find('option').each(function (i, q) {
var queue = $(q);
//id the data-group value == selected group show the item
if (queue.data('group') == group.val()) {
queue.show();
//this prints the value which should be showing
console.log('showing', queue.val());
} else {
queueToDeselect.push(queue.val());
queue.hide();
//this prints the value which should be hidden
console.log('hidding', queue.val());
}
});
});
//Delected all hidden queues
queueIds.multiselect('deselect', queueToDeselect);
queueIds.multiselect('refresh');
}
});
queueIds.multiselect({
nonSelectedText: 'Select queue(s)'
});
});
【问题讨论】:
-
我怀疑您必须在刷新 queueIds 多选之前实际删除
<option>元素。 -
你能提供这个的HTML标记还是小提琴。
-
查看了 github 存储库中的代码 .... 看起来你必须分叉它才能获得你想要的功能(除非你可以去物理删除 @ 987654334@ 不想要的值)。
标签: javascript jquery twitter-bootstrap multi-select bootstrap-multiselect