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

时间:2016-03-07 20:04:53

标签: jquery arrays push splice

当从多选下拉列表中取消选择值时,我尝试从数组中删除值。我使用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);
            }
        });
    }
});

2 个答案:

答案 0 :(得分:2)

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

@EDIT

好的,所以你有1套。

另一件事是,每次执行此方法时,您都会删除当前在#dropdownSelect中选中并在myArray myArray中显示的所有项目。您应该只删除myArray中存在但不存在于$(#dropdownSelect)。val()中的那些。 所以你应该分两步完成这个步骤:

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

  2. 然后针对myArray进行迭代,并删除#dropdownSelect中所选值中不存在的值:

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

答案 1 :(得分:0)

请尝试这个。

 $('#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);
                }
            });
        }
    });