在 jQuery 中清除多选

问题描述 投票:0回答:1
$("#selUser").bind('change keyup', function() {
    $('#selSubjects2').empty();


    if($(this).val().length > 0)
      $.each( $(this).val().split(','), function(i, val) {
        var option = new Option(val, val);
        option.selected = true;
        console.log("option",option);
        $('#selSubjects2').append(option);
      });

    $('#selSubjects2').trigger("change");
  });

我正在尝试使用空方法从 selsubjects2 中删除选项。 从

SelUser
下拉列表中选择新用户时,我想使用
selSubjects2
方法清除
empty
中的所有选项。

目前,在为 User1 选择权限后,如果我为 User2 选择权限,则会将这些新权限附加到 User1 的现有选项中。目标是完全删除 User1 的权限,然后用 User2 的权限填充

selSubjects2
。这可确保仅显示当前所选用户的权限,从而完全删除先前用户的权限。

如何完全去掉user1的权限然后追加user2的权限?

javascript jquery multi-select
1个回答
0
投票

要解决此问题,您需要在正确的元素上使用

.empty()
方法。您应该引用
$(this)
,而不是引用
$('#selSubjects2')
(它指的是当前元素(可能是 selUser)),因为那是您要清除的元素。此外,您应该将代码包装在更改事件处理程序中,以便它仅在 selUser 的值更改时运行。以下是如何实施的示例:

$("#selUser").on('change', function() {
    // Clear the options in selSubjects2
    $('#selSubjects2').empty();
    
    // Get the selected value from selUser
    var selectedUser = $(this).val();
    
    // If there is a selected user
    if(selectedUser){
        // Split the selected user's permissions into an array
        var permissions = selectedUser.split(',');
        
        // For each permission, append it as an option to selSubjects2
        $.each( permissions, function(i, permission) {
            var option = new Option(permission, permission);
            option.selected = true;
            $('#selSubjects2').append(option);
        });
        
        // Trigger the change event on selSubjects2 to update its selected options
        $('#selSubjects2').trigger("change");
    }
});
© www.soinside.com 2019 - 2024. All rights reserved.