隐藏select2选项
我试图隐藏一些select2选项,但是当我做这样的事情时:
...
select2忽略它,不像我禁用一个选项,或使它“readonly”。
有任何想法吗?
我在寻找同一问题的答案时偶然发现了这个问题,并且我使用select2的’templateResult’回调解决了这个问题。
在我的select2初始化时:
var dataIWantToShow = '1'; $('#mySelect').select2({ templateResult: function(option) { var myOption = $('#mySelect').find('option[value="' + option.id + '"'); if (myOption.data('show') == dataIWantToshow) { return option.text; } return false; } });
为了避免在select2选项列表中显示空li,我添加了以下css:
li.select2-results__option:empty { display: none; }
此解决方案不会添加或删除原始选择中的选项。
工作小提琴
为什么你需要那个? 简单:删除此选项!
如果您只需要在某些情况下显示,您可以使用javascript。
使用jQuery示例:
if (condition) { $('#yourselect').append(''); }
您应该删除不应该可用的选项。 如果您需要在JavaScript中动态执行此操作,则可以首先克隆完全填充的元素。 在任何给定时间,您都可以从原始
删除所有选项,并仅复制您希望此时可用的选项。 这样你就不会丢失任何样式,元数据,排序等。
这是一个例子:
$(document).ready(function () { var select = $(".yourselect"); var selectClone = select.clone(); function updateSelect() { var oldVal = select.val(); // first, remove all options select.find("option").remove(); // now add only those options that should be available from the clone // replace "data-show='yes'" with whatever you criteria might be var options = selectClone.find("option[data-show='yes']").clone(); select.append(options); // restore previously selected value if it is still possible if (select.find("option[value='" + oldVal + "']").length === 0) { oldVal = ""; } select.val(oldVal); // update select2 select.trigger('change'); } });
也许这个问题已经过时了但是我已经遇到了同样的问题。 我正在使用select2 v.3.5.1,我能够像这样修复它:
我在要隐藏的选项上添加了一个类:
这应该是这样的:
.hide_me { display: none!important; }
基本上我是通过style属性做的,但是使用了css类。 style属性对我也不起作用(即使multi select2似乎隐藏了所选的选项)。
希望这可以提供帮助。
您可以使用disabled="disabled"
属性禁用它。
请参考这个小提琴