我遇到了独特元素ID的问题?
我在这里做错了什么?
HTML:
<div id='gmapItemHolder'></div>
<button id='btnCreateMarker'>Add</button>
Jquery:
$("#btnCreateMarker").click(function () {
i = 1;
var gmapItemsHolder = "gmapItems" + i++;
$('<ul>' + '</ul>')
.attr({id: gmapItemsHolder, class: 'gmapUlHolder row-fluid'}).prependTo('#gmapItemHolder')
});
更新
所发生的事情是所有新创建的ul都获得ID 1
答案 0 :(得分:2)
i
的范围是本地的,因此它不会保持点击之间的状态。增加i
的范围,以便在事件之间保留它。
var i = 1;
$("#btnCreateMarker").click(function () {
var gmapItemsHolder = "gmapItems" + i++;
$('<ul>'
+ '</ul>'
).attr({id: gmapItemsHolder, class: 'gmapUlHolder row-fluid'}).prependTo('#gmapItemHolder')
});
答案 1 :(得分:1)
正如凯文所说,问题是i
每次都被使用和丢弃。
但不要按照他的建议创建一个全局变量。相反,将代码包装在作用域函数中并在那里定义:
(function() {
var i = 1;
$("#btnCreateMarker").click(function () {
var gmapItemsHolder = "gmapItems" + i++;
$('<ul>'
+ '</ul>'
).attr({id: gmapItemsHolder, class: 'gmapUlHolder row-fluid'}).prependTo('#gmapItemHolder')
});
})();
这样,i
被click
事件处理程序的所有调用共享,但它不是一个全局变量。
答案 2 :(得分:0)
试试这个:
var i =jQuery("#gmapItemHolder").children().length + 1;
var gmapItemsHolder = "gmapItems" + i;
取代:
i = 1;
var gmapItemsHolder = "gmapItems" + i++;