在jquery中迭代数组

时间:2013-08-27 19:49:35

标签: javascript 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 个答案:

答案 0 :(得分:1)

这里至少有三个问题:

  1. 您没有正确使用Array.forEach - 它需要一个带项目的功能。
  2. 在您进行检查之前,您正在添加您要查找的项目。您将始终点击alert案例。
  3. 您正在使用checkArr作为本地变量 - 每次进入该函数时,您都会获得一个空数组。
  4. 说到这一切,你可以在不保留阵列的情况下实现目标。我相信你可以用你的第一个提醒替换所有内容:

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