如何删除或禁用 select2 中的项目



嗨,我想在value(x) = 1时删除或禁用我的 select2 的第一项。我该怎么做?谢谢。

var myData= [
    {
        id: "id1",
        text: 'aaaaa'
    }, {
        id: "id2",
        text: 'bbbbb'
    }
            ];

var x=0;
if (x == '1') {
    $('.select2 option[value="' + myData[0]+ '"]').remove()
}

我假设您正在使用jQuery select2并且您正在从myData创建select2元素。

如果你的数据是事实来源,你可以这样做来保持更新,并在你的 DOM(你看到的(中反映该状态。

使用 .shift() . 从数据数组中删除第一个元素。

然后用新数据重新初始化 select2 元素。像这样(下面的完整工作代码(:

// condition > do something to select2 element's data
if (true) {
  // remove first data item from array
  myData.shift();
  // empty select2 element's data and re-init
  $(".select2").empty();
  $(".select2").select2({
    data: myData
  });
}

您可以运行它以查看它是否正常工作。应用条件后,仅保留 myData 中的第二个数据项。

如果这解决了您的问题,请通过接受答案让我知道:)

<link href="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.7/css/select2.min.css" rel="stylesheet"
/>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.7/js/select2.min.js"></script>
<select class="select2"> </select>
<script>
  $(document).ready(function() {
    // data
    var myData = [
      {
        id: "id1",
        text: "aaaaa"
      },
      {
        id: "id2",
        text: "bbbbb"
      }
    ];
    // your select2 element already exists
    $(".select2").select2({
      data: myData
    });
    // condition > do something to select2 element's data
    if (true) {
      // remove first data item from array
      myData.shift();
      // empty select2 element's data and re-init
      $(".select2").empty();
      $(".select2").select2({
        data: myData
      });
    }
  });
</script>

来自 MDN:shift(( 方法从数组中删除第一个元素并返回已删除的元素。此方法更改数组的长度。

<select name="carlist" form="carform">
  <option value="volvo">Volvo</option>
  <option value="saab">Saab</option>
  <option value="opel">Opel</option>
  <option value="audi">Audi</option>
</select>

如果您想从选择选项中删除沃尔沃,请使用这个

$("select option[value='volvo']").remove()

最新更新