Javascript 从select2中的选定元素中删除一项

Javascript 从select2中的选定元素中删除一项,javascript,jquery-select2,Javascript,Jquery Select2,我有一个多选,有很多选择。当选择“所有人”时,它将删除其他选定对象;如果选择了其他对象,并且选择了“所有人”,则它应将其删除 要删除另一个并保留“所有人”项,这没关系。但我有问题保留其他人,只删除所有人 目前,我有如下想法: resetGroupSelectionWhenEverybody: function() { $(".group_ids").on("select2:select", function (e){ if (e.params.data.text ===

我有一个多选,有很多选择。当选择“所有人”时,它将删除其他选定对象;如果选择了其他对象,并且选择了“所有人”,则它应将其删除

要删除另一个并保留“所有人”项,这没关系。但我有问题保留其他人,只删除所有人

目前,我有如下想法:

  resetGroupSelectionWhenEverybody: function() {
    $(".group_ids").on("select2:select", function (e){
      if (e.params.data.text === 'everybody') {
        $('#scheduled_publication_groups_ids').select2({width: '50%'}).val(group_everybody_id).trigger("change");
      } else {
        if ($('[title="everybody"]').length > 0) {
          var idToRemove = 0;
          groupIdsData = $('#scheduled_publication_groups_ids').select2('data');
          groupIdsData.forEach(function(e, i) {
            if (e.text === 'everybody') {
              idToRemove = i;
            }
          });
          groupIdsData.splice(idToRemove, 1);
          $('#scheduled_publication_groups_ids').select2({'data': groupIdsData}).trigger("change");
        }
      }
    });
  },
使用此代码,
groupIdsData
正是我想要的选定元素(所有元素都是
everybody
的组)。但在我坚持改变观点之后
select2({'data':groupIdsData})
似乎不是正确的选择

几件事:

  • 我认为我没有正确设置
    idToRemove
  • 更新select2 multiselect值的最佳方法是什么?看来

  • 答案是使用
    select2('val')
    获取一个ID数组,然后使用它。使用.val()非满select2对象编写代码更好

      resetGroupSelectionWhenEverybody: function() {
        $(".group_ids").on("select2:select", function (e){
          if (e.params.data.text === 'everybody') {
            $('#scheduled_publication_groups_ids').select2({width: '50%'}).val(group_everybody_id).trigger("change");
          } else {
            if ($('[title="everybody"]').length > 0) {
              groupIds = $('#scheduled_publication_groups_ids').select2('val');
              groupToKeep = groupIds.splice( $.inArray(group_everybody_id, groupIds), 1);
              $('#scheduled_publication_groups_ids').select2({width: '50%'}).val(groupToKeep).trigger("change");
            }
          }
        });
      },