隐藏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"属性禁用它。

  

请参考这个小提琴