【发布时间】:2013-08-27 19:49:34
【问题描述】:
我正在尝试对从列表中选择项目的用户进行一些验证。我想通过检查 <li> 是否已经在数组中来确保一个项目没有被添加两次。这是我正在尝试的,但它不起作用。
$(".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 = ("<li id = " + itemtoadd + " class = \"itemAdd\">" + name + "</li>");
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);
});
【问题讨论】:
-
您也可以只使用常规的 for 循环,这样可能会更快。
-
我不知道这对您的用例是否重要,但 Array.forEach 在 IE 8 及更低版本中不受支持。 Mozilla Developer link
-
我读到了。我可能会搬到
.each() -
即使您的
for正确,您仍然会遇到两个问题,如我的回答中所述。方便的是,您实际上根本就需要循环。
标签: javascript jquery