select2,show前怎么改

select2, how to change before show

我正在使用 select2 构建我的组合。

一些元素被禁用,但我想将它们显示为粗体但需要 aria-required="false"

var data= [{
     id="1",
     value = "first",
     disabled:true
},{
     id="2",
     value = "second",
     disabled:false
},

];
function formatResult(node) {
  if(node.disabled){
    var $result = $('<span><strong>' + node.text + '</strong></span>');
  } else {
    var $result = $('<span>' + node.text + '</span>');
  }
  return $result;
}

$("#myCombo").select2({
  placeholder: 'Seleccione una opción',
  width: "350px",
  data: data,
  formatSelection: function(item) {
    return item.text
  },
  formatResult: function(item) {
    return item.text
  },
  templateResult: formatResult
});

};

可行,但 li :

<li class="select2-results__option" role="treeitem" aria-disabled="true">
        <span style="padding-left:20px;"><strong>first</strong></span>
</li>

打开时,使用调试器,如果我执行:

$('.select2-results__option').attr('aria-disabled',false);

它按我想要的方式工作,但我无法以编程方式执行此操作,似乎不存在 beforeShow 函数,我该怎么做?

一般情况下,你可以通过超时来实现。

$("#myCombo").select2({
  placeholder: 'Seleccione una opción',
  width: "350px",
  data: data,
  formatSelection: function(item) {
    return item.text
  },
  formatResult: function(item) {
    return item.text
  },
  templateResult: formatResult
});
setTimeout(function(){
  $('.select2-results__option').attr('aria-disabled',false);
});