Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从下拉列表中取消选择时,Jquery从数组中删除值_Jquery_Arrays_Push_Splice - Fatal编程技术网

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

从下拉列表中取消选择时,Jquery从数组中删除值,jquery,arrays,push,splice,Jquery,Arrays,Push,Splice,当从多选下拉列表中取消选择值时,我尝试从数组中删除值。我可以使用push()添加值,但取消选择时删除值时遇到一些问题 以下是我所拥有的: $('#dropdownSelect').change(function() { if ($(this).val()) { $.each($(this).val(), function(index, value) { if ($.inArray(value, myArray) == -1) {

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

方法的第二个参数是要删除多少项。这里有0,它应该是1

@编辑

好的,你有一套

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

  • 对所选值进行迭代,并将不存在的值添加到
    myArray

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

  • 更新小提琴:
    更新的fiddle(删除最后一个对象):

    数组的第二个参数。splice()方法是删除多少项。这里有0,它应该是1

    @编辑

    好的,你有一套

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

  • 对所选值进行迭代,并将不存在的值添加到
    myArray

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

  • 更新小提琴: 更新的fiddle(删除最后一个对象):

    请尝试这一个

     $('#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);
                    }
                });
            }
        });
    
    请试试这个

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

    对不起,错别字,我有一套。非常感谢。这是有效的。唯一的问题是无法清除数组中剩余的最后一个值。如果我选择另一个值,它将替换最后一个值,即索引0处的值。当我查看您的代码时,我认为这是您的意图,让我来修复小提琴…对不起,输入错误,我有一套。非常感谢。这是有效的。唯一的问题是无法清除数组中剩余的最后一个值。如果我选择另一个值,它将替换最后一个值,即索引0处的值。当我查看您的代码时,我认为这是您的意图,让我修复小提琴。。。