从下拉列表中取消选择时,Jquery 从数组中删除值

Posted

技术标签:

【中文标题】从下拉列表中取消选择时,Jquery 从数组中删除值【英文标题】:Jquery remove value from array when deselecting from dropdown 【发布时间】:2016-06-21 13:08:54 【问题描述】:

当从多选下拉列表中取消选择值时,我正在尝试从数组中删除值。我添加了使用 push() 工作的值,但是在取消选择时我在删除时遇到了一些麻烦。

这是我所拥有的:

$('#dropdownSelect').change(function() 
    if ($(this).val()) 
        $.each($(this).val(), function(index, value) 
            if ($.inArray(value, myArray) == -1) 
                myArray.push(value);
             else 
                myArray.splice(index,1);
            
        );
    
);

【问题讨论】:

【参考方案1】:

Array.splice() 方法的第二个参数是要删除多少项。你那里有 0,它应该是 1。

@编辑

好的,所以你有 1 套。

另一件事是,每次执行此方法时,您都会从myArray 中删除当前在#dropdownSelect 中选择并出现在myArray 中的所有项目。您应该只删除存在于myArray 中而不存在于$(#dropdownSelect).val() 中的那些。 因此,您应该分两步执行此操作:

    针对选定的值进行迭代并将那些不存在的值添加到myArray

    然后对myArray进行迭代并删除#dropdownSelect中选定值中不存在的那些:

更新小提琴:https://jsfiddle.net/g2orqhuy/1/ 更新小提琴(删除最后一个对象):https://jsfiddle.net/g2orqhuy/2/

【讨论】:

对不起,错字,我有 1 套。 非常感谢。这是有效的。唯一的问题是无法清除数组中剩余的最后一个值。如果我选择另一个值,它将替换最后一个值,即索引 0 处的值。 当我查看您的代码时,我以为这是您的意图,让我来解决这个问题......【参考方案2】:

请试试这个。

 $('#dropdownSelect').change(function() 
        if ($(this).val()) 
            $.each($(this).val(), function(index, value) 
                if ($.inArray(value, myArray) == -1) 
                    myArray.push(value);
                 else 
                    myArray.splice($.inArray(value, myArray),1);
                
            );
        
    );

【讨论】:

以上是关于从下拉列表中取消选择时,Jquery 从数组中删除值的主要内容,如果未能解决你的问题,请参考以下文章

如何从表格的下拉菜单中删除先前选择的选项?

MVC中的多选下拉选择和取消选择问题

从下拉列表中获取所选文本,但使用jQuery删除数值

如何使用jquery在标签中显示多选下拉列表的选定文本?

jQuery从下拉列表中删除一个选项,给定选项的文本/值

从下拉列表中选择数据时,从 MYSQL 数据库中设置输入字段值属性