【问题标题】:How to change the background of each select2 option?如何更改每个 select2 选项的背景?
【发布时间】:2020-09-28 20:50:59
【问题描述】:

我正在使用 select2 作为下拉选择框,我正在尝试更改选项的背景颜色。每个选项都有一个单独的颜色。我尝试通过向选项添加样式属性,但它似乎不起作用。

<select class="js-example-basic-multiple form-control" id="select-tags" name="usertags" multiple="multiple">
        {% for tag in userTags %}
        <option value="{{ tag }}" data-id="{{ tag.color }}" style="background-color:{{ tag.color }}" class="options">{{ tag }}</option>
        {% endfor %}
    </select>

$('.js-example-basic-multiple').select2();

【问题讨论】:

  • 请附上您的代码
  • 我已经添加了代码,但它没有任何帮助。

标签: javascript jquery jquery-select2


【解决方案1】:

&lt;select&gt; 中的&lt;option&gt; 元素添加背景颜色不起作用,因为这些元素最终会被隐藏。 Select2 隐藏原来的&lt;select&gt;,然后生成自己的元素以生成样式化的“假”选择控件,该控件反映隐藏的“真实”选择控件的值。

由于 select2 不提供用于将颜色值传递给各个选项的 API,因此您需要尝试使用 CSS 中的 nth-child() 选择器或一些额外的 javascript 来设置 select2 创建的假选项元素的样式。 Here's a question from 2018 with answers demonstrating each approach.

【讨论】:

  • 有没有一种方法可以让我从 select2 中查看为下拉选项生成的 HTML?
  • 当然!如果您使用的是 Chrome 或 Firefox(或启用了“开发”菜单的 Safari),请右键单击页面中的 select2 下拉菜单,然后单击“检查元素”。然后,您将能够探索 DOM 并查看所有内容,包括 javascript 生成的 HTML。
  • 我在 Inspect 中搜索过,但找不到。然后我看了一下文档,发现它是在 DOM 的底部生成的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-11-26
  • 2015-01-04
  • 1970-01-01
  • 1970-01-01
  • 2013-04-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多