繁体   English   中英

遍历jQuery中的数组

[英]iterate over array in jquery

我正在尝试对从列表中选择项目的用户进行验证。 我想通过检查<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);


 });

您在这里至少有三个问题:

  1. 您没有正确使用Array.forEach -它需要一个接受项的函数。
  2. 在您进行检查之前,您正在添加要查找的项目。 您将始终处于alert
  3. 您将checkArr用作局部变量-每次输入该函数都会得到一个空数组。

话虽如此,您无需保留任何数组就可以实现目标。 我相信您可以使用以下方法替换从第一条警报开始的所有内容:

if ($('#' + itemtoadd, div).length == 0) {
    itemtoadd = ("<li id = " + itemtoadd + " class = \"itemAdd\">" + name + "</li>");
    div.append(itemtoadd);
}
else {
    alert("this item has already been added");
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM