我正在處理包含複選框和值的下拉列表。當我選擇一個複選框時,該特定項目的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