在jquery中迭代数组
我正在尝试对用户从列表中选择项目进行一些validation。 我想通过检查
$(".List").on("click", "li", function () { var i = 0; var checkArr = []; var div = $("#AddedItems"); var parent = $(this).closest("ul"); var itemtoadd = parent.find("[data-id]").attr("data-id"); var name = parent.find("[data-name]").attr("data-name"); alert(itemtoadd + name);//checking var itemtoadd = ("" + name + " "); checkArr.push(itemtoadd); //put one in to check against? checkArr.forEach(item) { if (item == itemtoadd) alert("this item has already been added"); else { checkArr.push(itemtoadd); alert(itemtoadd); $(itemtoadd).appendTo(div); } } // div.html(itemtoadd); });
你这里至少有三个问题:
- 您没有正确使用
Array.forEach
– 它需要一个带项目的函数。 - 在您进行检查之前,您正在添加您要查找的项目。 您将始终点击
alert
案例。 - 您使用
checkArr
作为局部变量 – 每次进入函数时都会得到一个空数组。
总而言之,你可以在不保留arrays的情况下实现目标。 我相信你可以用你的第一个警报取代所有内容:
if ($('#' + itemtoadd, div).length == 0) { itemtoadd = ("" + name + " "); div.append(itemtoadd); } else { alert("this item has already been added"); }