【问题标题】:How to add icon in select2?如何在select2中添加图标?
【发布时间】:2016-09-20 01:21:42
【问题描述】:

我使用的是 select2 版本 4

我尝试这样:

$("select02").select2({
    placeholder: "<i class='fa fa-sitemap'></i>Branch name",
});

但是,它不起作用

演示是这样的:http://jsfiddle.net/fc1qevem/8/

有什么办法可以解决我的问题吗?

【问题讨论】:

标签: javascript jquery html css jquery-select2


【解决方案1】:

请务必先阅读参考/手册!

来自web site 上的官方 select2 示例;

function formatState (state) {
  if (!state.id) { return state.text; }
  var $state = $(
    '<span><img src="vendor/images/flags/' +  state.element.value.toLowerCase() + 
'.png" class="img-flag" /> ' + 
state.text +     '</span>'
 );
 return $state;
};

$(".js-example-templating").select2({
  templateResult: formatState
});

给你结果:

【讨论】:

  • 这不是他要求的。他希望在搜索字段中有一个图标。
  • 谢谢你!我喜欢你的回答;
【解决方案2】:

找到这个How to add html placeholder to select2?

所以你需要的是:

$("select02").select2({
  placeholder: '<i class="fa fa-sitemap"></i>Branch name',
  escapeMarkup : function(markup) {
    return markup;
  }
});

【讨论】:

    【解决方案3】:

    对于图标而不是 img 使用:

    function format (state) {
        if (!state.id) { return state.text; }
        return '<i class="fa fa-lg '+state.id.toLowerCase()+'"></i> '+state.text;
    } 
    
    $("#select2icon").select2({
        formatResult: format,
        formatSelection: format,
        escapeMarkup: function(m) { return m; }
    });
    

    【讨论】:

      【解决方案4】:

      根据the migration guide,3.5.x 之后的版本不再使用formatResultformatSelection。这些已替换为templateResulttemplateSelection

      function iconFromValue(val){
          if(val.element){
              val = `<span class="select2-option-img"><img src="${val.element.value}"><span> ${val.text}`;
          }
          return val;
      }
      
      $(document).ready(function() {
          $('.select2').select2({
              templateResult: iconFromValue,
              templateSelection: iconFromValue,
              escapeMarkup: function(m) { return m; }
          });
      }
      

      【讨论】:

        【解决方案5】:

        这是工作示例:

        function format(state) {
            if (!state.id) 
                return state.text; // optgroup
            return "<img class='flag' src='images/flags/" + state.id.toLowerCase() + ".png'/>" + state.text;
        }
        
        $("#select2").select2({
            formatResult: format,
            formatSelection: format,
            escapeMarkup: function(m) { return m; }
        });
        

        js 以上用户。

        【讨论】:

          【解决方案6】:

          你几乎拥有它。您只需要添加“escapeMarkup”。请参阅下面的代码。

          var select02 = $('#select02');
          
          $(select02).select2({
              data: [{
                  id: 0,
                  text: "test01"
              }, {
                  id: 1,
                  text: "test02"
              }, {
                  id: 2,
                  text: "test03"
              }, {
                  id: 3,
                  text: "test04"
              }, {
                  id: 4,
                  text: "test05"
              }],
               placeholder: "<i class='fa fa-sitemap'></i>Branch name",
               escapeMarkup: function (markup) { return markup; }
          });
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2013-06-11
            • 1970-01-01
            • 2015-05-31
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2018-10-25
            • 2015-08-27
            相关资源
            最近更新 更多