jquery – Select2中的可选optgroups

前端之家收集整理的这篇文章主要介绍了jquery – Select2中的可选optgroups前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想用缩进创建多级select2选项,但我不想为此使用optgroup元素,因为我想允许选择主要类别.如果是select2,有什么方法可以设置样式吗?

我的原始HTML选择如下所示:

  1. <select class="js-select-multiple">
  2. <option class="l1">Option 1</option>
  3. <option class="l2">Suboption 1</option>
  4. <option class="l2">Suboption 2</option>
  5. <option class="l2">Suboption 3</option>
  6. <option class="l1">Option 2</option>
  7. ...
  8. </select>
  9. <script>$(".js-select-multiple").select2({maximumSelectionLength: 5});</script>

所以不使用Select2我可以将文本缩进属性添加到.l2类.但是,似乎Select2不使用那些用于选项的类,因此设置这些类的样式将不起作用.

那有什么解决方法吗?

解决方法

你认识到Select2没有携带< option>中的CSS类是正确的.标签到结果列表.这主要与未将结果列表明确地绑定到现有的< option>有关.标签,还有一组合理的默认值.之后添加转移类的能力比删除它更容易.

您可以通过覆盖templateResult并从data.element获取原始选项(其中data是第一个参数)来完成此操作.

  1. $('.select2').select2({
  2. templateResult: function (data) {
  3. // We only really care if there is an element to pull classes from
  4. if (!data.element) {
  5. return data.text;
  6. }
  7.  
  8. var $element = $(data.element);
  9.  
  10. var $wrapper = $('<span></span>');
  11. $wrapper.addClass($element[0].className);
  12.  
  13. $wrapper.text(data.text);
  14.  
  15. return $wrapper;
  16. }
  17. });
  1. .l2 {
  2. padding-left: 1em;
  3. }
  1. <link href="//cdnjs.cloudflare.com/ajax/libs/select2/4.0.0/css/select2.css" rel="stylesheet"/>
  2.  
  3. <script src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.js"></script>
  4. <script src="//cdnjs.cloudflare.com/ajax/libs/select2/4.0.0/js/select2.js"></script>
  5.  
  6. <select class="select2" style="width: 200px">
  7. <option class="l1">Option 1</option>
  8. <option class="l2">Suboption 1</option>
  9. <option class="l2">Suboption 2</option>
  10. <option class="l2">Suboption 3</option>
  11. <option class="l1">Option 2</option>
  12. </select>

请注意,我也使用padding-left而不是text-indent,这是Select2通常用于嵌套选项的内容.

猜你在找的jQuery相关文章