我想在单击按钮时在JQuery中给出元素id但是众所周知,两个元素不应该具有相同的id。所以我创建了一个包含所有当前ID的数组,并检查下一个计算的id是否已经存在。由于某种原因,它没有按预期工作。
我希望它进入一个循环,直到id找到一个尚未使用的数字。所以在下面的代码中,它计算3 <li>
并将下一个元素指定为id为4,但是,具有该Id的元素已经存在,因此它应该出现在数组中并进入循环以将1添加到数字,直到找到数组中不存在的数字。任何和所有的帮助表示赞赏!这是fiddle。
的JQuery:
$(document).ready(function () {
$(".addParent").click(function () {
var IDs = $("#list > li").map(function () {
return this.id;
}).get();
var num = ($("#list").children().length) + 1;
while (jQuery.inArray(num, IDs) != -1) {
num++;
}
$("#list").append("<li id='" + num + "'><textarea class='inputBelief' rows='1' cols='50'>id is " + num + "</textarea></li>");
return false;
});
});
HTML:
<ol id="list">
<li id='1'>
<textarea class='inputBelief' rows='1' cols='50'>id is 1</textarea>
</li>
<li id='2'>
<textarea class='inputBelief' rows='1' cols='50'>id is 2</textarea>
</li>
<li id='4'>
<textarea class='inputBelief' rows='1' cols='50'>id is 4</textarea>
</li>
</ol>
<a class="addParent" href="#">add line</a>
答案 0 :(得分:0)
在地图功能中执行
return parseInt($(this).prop('id'));
答案 1 :(得分:0)
问题是IDs
是字符串的数组而不是数字,所以inArray
永远不会按预期工作,因为你试图在字符串数组中找到一个数字。尝试将map方法更改为:
var IDs = $("#list li[id]").map(function () {
return +this.id;
}).get();