从下拉列表中取消选择时,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 从数组中删除值的主要内容,如果未能解决你的问题,请参考以下文章