隐藏select2选项

Tom*_*mir 7 jquery select jquery-select2

我试图隐藏一些select2选项,但是当我做这样的事情时:

<option style="display: none;">...</option>
Run Code Online (Sandbox Code Playgroud)

select2忽略它,不像我禁用一个选项,或使它"readonly".

有任何想法吗?

小智 5

我用一个史诗般的解决方案解决了这个问题。

我的 select2 版本是 4.0.5,只需要hidden在每个隐藏选项中使用属性(您可以更改其逻辑),而不需要style="display:none"(对我来说更干净)。

<select class="select2">
   <option value="">Select</option>
   <option value="1">One</option>
   <option value="2" hidden>Two</option>
   <option value="3">One</option>
</select>
Run Code Online (Sandbox Code Playgroud)

现在,唯一需要的代码是 select2 的初始化:

$('.select2').select2({
   templateResult: function(option) {
      if(option.element && (option.element).hasAttribute('hidden')){
         return null;
      }
      return option.text;
   }
});
Run Code Online (Sandbox Code Playgroud)

hidden是一个标准属性,您可以使用 jQuery 方法动态更改它attrremoveAttrhttps ://www.w3schools.com/tags/att_global_hidden.asp


小智 -1

为什么你需要那个?很简单:删除这个选项!

如果您只需要在某些情况下显示,您可以使用 javascript。

使用 jQuery 示例:

if (condition) {
    $('#yourselect').append('<option value="foo" selected="selected">Foo</option>');
}
Run Code Online (Sandbox Code Playgroud)

  • 我厌倦了那些只是告诉你不要做某事的答案。如果他想保留排序顺序作为他计划再次显示的选项怎么办? (23认同)
  • 我已经这样做了,但我希望有一个更优雅的解决方案。 (2认同)