【问题标题】:Jquery remove value from array when deselecting from dropdown从下拉列表中取消选择时,Jquery 从数组中删除值
【发布时间】: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);
            }
        });
    }
});

【问题讨论】:

    标签: jquery arrays push splice


    【解决方案1】:

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

    @编辑

    好的,所以你有 1 套。

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

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

    2. 然后对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);
                    }
                });
            }
        });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-01
      • 2022-12-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多