我正在处理包含复选框和值的下拉列表。当我选择一个复选框时,该特定项目的ID将被附加到右侧面板上的输入中,并且该项目的值将以右侧面板上的标签形式附加。当我再次点击一个选中的复选框时,附加值和右边的标签必须被删除。从数组中删除值
我面临的问题是,我取消选中的复选框没有被删除,而是其他一些附加值附加值被删除。
的Javascript:
var arr = [];
$(".taglistarea input[type='text']").click(function(){
if(!$(this).parent("div").next(".taglist").is(":visible")) {
$(this).parent("div").next(".taglist").slideDown();
} else {
$(this).parent("div").next(".taglist").slideUp();
}
});
$(".taglist ul li a input[type='checkbox']").click(function(){
var tagidall = $(".taglist ul li a").attr("id");
var tagideach = $(this).parent("a").attr("id");
var tagtexteach = $(this).text();
arr.push(tagideach);
if($(this).is(":checked")) {
$(this).addClass("active");
$(".ss").append('<a href="#" id="'+tagideach+'" class="tagss">International<span class="closetag"></span></a>');
} else {
$(".ss a[id="+tagideach+"]").remove();
//arr.splice(tagideach,1);
}
//alert(arr);
$("#idvals").val(arr.toString());
});
我认为这个问题是在这里:
arr.splice(tagideach,1);
完整的小提琴是在这里: https://jsfiddle.net/kue83ud8/
感谢。
感谢您的代码,@pwolaq。你的改变奏效了,我也搬了arr.push(tagideach);在内部如果($(this).is(“:checked”)){为了确保切片仅在复选框被选中时发生。但是,你能解释一下.splice函数,以及如何用','分隔的2个值被添加到splce中吗?请也解释为什么我应该检查是否值保留不是-1。 – user3450590
如果在数组中找不到元素,那么'indexOf'返回-1 - 如果是的话,那么你不应该使用'splice'; 'splice'的第一个参数是开始索引,第二个是要删除的元素的数量 - 你应该在文档 – pwolaq