当从多选下拉列表中取消选择值时,我尝试从数组中删除值。我使用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 :(得分:2)
Array.splice()方法的第二个参数是要删除的项目数。那里你有0,它应该是1.
@EDIT
好的,所以你有1套。
另一件事是,每次执行此方法时,您都会删除当前在#dropdownSelect
中选中并在myArray
myArray
中显示的所有项目。您应该只删除myArray
中存在但不存在于$(#dropdownSelect
)。val()中的那些。
所以你应该分两步完成这个步骤:
对所选值进行迭代,并将myArray
添加到那些不存在的值,
然后针对myArray
进行迭代,并删除#dropdownSelect
中所选值中不存在的值:
更新了小提琴: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);
}
});
}
});