下面是我的HTML代码:
<select class="select2">
<option value="1" style="background-color: #ff0000;">OPTION 1</option>
<option value="2" style="background-color: #ffffff;">OPTION 2</option>
....
<option value="144" style="background-color: #000000;">OPTION 144</option>
</select>
最后,我使用select 2打印这个选择列表:
$('.select2')select2();
问题在于style属性--当我在每个选项中设置这个属性时,jQuery脚本不会为<li>
列表复制这个属性。
我知道,我可以将每个background-color
设置为<style></style>
标记,但我有更多选项(~150),我管理这个属性(背景色)在我的网站作为活(当用户改变一些选项,然后我改变背景颜色),所以我需要的解决方案,这将是活拷贝风格属性从原来的选项列表,当我重置选择列表(使用$('.select2').select2()
),bg颜色也将被重置。
我该怎么做?
@更新
我是这样解决问题的:
function formatState(data, container)
{
if (data.element)
{
$(container).css('background-color', '#'+$(data.element).attr('data-style'));
}
return data.text;
}
$('.select2').select2({templateResult: formatState});
然后替换选项HTML代码:
<option value="1" style="background-color: #ff0000;">OPTION 1</option>
为此:
<option value="1" data-style="ff0000">OPTION 1</option>
1条答案
按热度按时间xoefb8l81#
在第一点上,作为一种选择,您可以定义类并像下面的jquery示例一样使用它,将
.data('style')
替换为.data('class')
,将style="
替换为class="
。解决方案
否则,你可以用
templateResult
选项模板化下拉列表-你可以在这里找到文档。基于你分享的例子,我会像这样解决它: