在 这个从远程源加载的数据示例 中,我可以看到呈现为选项的图像和其他 html 元素。我想使用本地数组中的数据完成同样的事情。我已经尝试按照文档中的描述构建一个数组,并使用 data
选项添加它,但 html 呈现为纯文本:
var data = [
{ id: 0, text: '<div style="color:green">enhancement</div>' },
{ id: 1, text: '<div style="color:red">bug</div><div><small>This is some small text on a new line</small></div>' }];
$("select").select2({
data: data
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.2/css/select2.min.css" rel="stylesheet" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.2/js/select2.min.js"></script>
<select></select>
如何将 html 内容添加到 select2 选项?
原文由 Eaten by a Grue 发布,翻译遵循 CC BY-SA 4.0 许可协议
好的,玩了一会儿并找到了一个可行的解决方案,所以我会在这里回答我自己的问题。
对我来说,这里的关键是构建一个包含
templateSelection
和templateResult
内容的数据数组。后者在下拉列表中呈现良好,但任何多行内容都不会包含在 select2 元素中,因此需要内联显示(或至少在单行上)。将escapeMarkup
定义为一个选项,允许覆盖通常会删除 html 内容的核心功能。定义
title
属性也很重要,否则您最终会在工具提示中看到 html 标签。或者,通过几个小的 CSS 调整,您可以允许完整的 html 选项内容显示在选择容器内,而无需模板回调: