在 select2 V4 下拉项中添加 fontawesome 图标
Add fontawesome icons into select2 V4 dropdown items
我正在尝试在 Select2 v4 下拉项中显示 fontawesome 图标。但是下拉菜单显示 html 而不是生成实际图标。此方法适用于 select2 V3,但似乎不适用于 v4。任何帮助表示赞赏。谢谢
HTML
<div class="select2-wrapper">
<select class="input icons_select2">
<option value="fa-dribbble" data-icon="fa-dribbble">Dribbble</option>
<option value="fa-dropbox" data-icon="fa-dropbox">Dropbox</option>
<option value="fa-facebook" data-icon="fa-facebook">Facebook</option>
</select>
</div>
JS
function iformat(icon) {
var originalOption = icon.element;
return '<i class="fa ' + $(originalOption).data('icon') + '"></i> ' + icon.text;
}
$('.icons_select2').select2({
width: "100%",
templateSelection: iformat,
templateResult: iformat
});
查看 fiddle 示例:
http://jsfiddle.net/qCn6p/206/
您可以将 return 换成 $.parseHTML()
。
示例:return $.parseHTML('<i class="fa ' + $(originalOption).data('icon') + '"></i> ' + icon.text);
这是您更新后的 fiddle
您必须像这样将元素包裹在 jquery 中:
function iformat(icon) {
var originalOption = icon.element;
return $('<span><i class="fa ' + $(originalOption).data('icon') + '"></i> ' + icon.text + '</span>');
}
$('.icons_select2').select2({
width: "100%",
templateSelection: iformat,
templateResult: iformat,
allowHtml: true
});
使用"escapeMarkup"选项如下
$('.icons_select2').select2({
width: "100%",
templateSelection: iformat,
templateResult: iformat,
escapeMarkup: function(m) {
return m;
}
});
仅供参考,如果您 return 一个用于 templateSelection/templateResult 覆盖函数的字符串,它将被转义(除非您也覆盖了 escapeMarkup 函数),但是如果您 return 一个 jquery 对象它不会被转义。
一些示例也忽略不带和 id
的格式化输入
if (!icon.id) { return icon.text; }
看到这个Fiddlehttp://jsfiddle.net/dleffler/15myta6t/3/
我正在尝试在 Select2 v4 下拉项中显示 fontawesome 图标。但是下拉菜单显示 html 而不是生成实际图标。此方法适用于 select2 V3,但似乎不适用于 v4。任何帮助表示赞赏。谢谢
HTML
<div class="select2-wrapper">
<select class="input icons_select2">
<option value="fa-dribbble" data-icon="fa-dribbble">Dribbble</option>
<option value="fa-dropbox" data-icon="fa-dropbox">Dropbox</option>
<option value="fa-facebook" data-icon="fa-facebook">Facebook</option>
</select>
</div>
JS
function iformat(icon) {
var originalOption = icon.element;
return '<i class="fa ' + $(originalOption).data('icon') + '"></i> ' + icon.text;
}
$('.icons_select2').select2({
width: "100%",
templateSelection: iformat,
templateResult: iformat
});
查看 fiddle 示例: http://jsfiddle.net/qCn6p/206/
您可以将 return 换成 $.parseHTML()
。
示例:return $.parseHTML('<i class="fa ' + $(originalOption).data('icon') + '"></i> ' + icon.text);
这是您更新后的 fiddle
您必须像这样将元素包裹在 jquery 中:
function iformat(icon) {
var originalOption = icon.element;
return $('<span><i class="fa ' + $(originalOption).data('icon') + '"></i> ' + icon.text + '</span>');
}
$('.icons_select2').select2({
width: "100%",
templateSelection: iformat,
templateResult: iformat,
allowHtml: true
});
使用"escapeMarkup"选项如下
$('.icons_select2').select2({
width: "100%",
templateSelection: iformat,
templateResult: iformat,
escapeMarkup: function(m) {
return m;
}
});
仅供参考,如果您 return 一个用于 templateSelection/templateResult 覆盖函数的字符串,它将被转义(除非您也覆盖了 escapeMarkup 函数),但是如果您 return 一个 jquery 对象它不会被转义。
一些示例也忽略不带和 id
的格式化输入if (!icon.id) { return icon.text; }
看到这个Fiddlehttp://jsfiddle.net/dleffler/15myta6t/3/