如果我的解释不够清晰,请告诉我,因为我只是想到就感到混乱。
我希望能够点击一个名为“添加产品”的按钮,并且每次单击该按钮都会创建一个唯一的div。例如,第一个div将具有id #product1,然后是#product2等。
真正棘手的部分是在div中有两个文本输入框。这些也需要有唯一的ID,以便我可以使用它们中所放置的内容。
如果您有任何解决方案,请告诉我。谢谢, 卡森
如果我的解释不够清晰,请告诉我,因为我只是想到就感到混乱。
我希望能够点击一个名为“添加产品”的按钮,并且每次单击该按钮都会创建一个唯一的div。例如,第一个div将具有id #product1,然后是#product2等。
真正棘手的部分是在div中有两个文本输入框。这些也需要有唯一的ID,以便我可以使用它们中所放置的内容。
如果您有任何解决方案,请告诉我。谢谢, 卡森
var i = 1;
$("#addProduct").click(function() {
$("<div />", { "class":"wrapper", id:"product"+i })
.append($("<input />", { type: "text", id:"name"+i }))
.append($("<input />", { type: "text", id:"property"+i }))
.appendTo("#someContainer");
i++;
});
你可以在这里尝试一下,这是一个非常通用的答案,但你可以明白其中的思路,每次添加完你的项目后只需增加变量即可。
wrapper
替换为您希望 div 具有的任何类或多个类即可 :) - Nick Craver<input>
是一个自闭合或未闭合的元素,IE 可能会拒绝它。另外,不要使用字符串,只需使用类似 onmouseover:Highlight
的东西,其中 Highlight
是您的函数,并在其中使用 this.id
... 因为 this
将指向发生事件的 <div>
。 - Nick Craver好的。这是一篇非常古老的帖子,但我认为如果你遇到类似的问题,这可能会有所帮助。我在jQuery中发现了.uniqueId()方法(点击这里)。
它检查元素是否已经有ID,如果没有,则分配一个唯一的ID。缺点是您不能给它指定“自定义ID名称”(例如product_1、product_2等)。分配的ID类似于ui-id-1、ui-id-2等。
要分配唯一的ID,可以像这样操作 -
$("<div class='someDivConntet'></div>").insertAfter($(this)).uniqueId();
请确保元素上没有设置id属性。
$(function(){
var pcount = icount = 0;
$('<div/>', {
id: 'product' + pcount++
}).append($('<input/>', {
id: 'input' + icount++
})).append($('<input/>', {
id: 'input' + icount++
})).appendTo(document.body);
});
document.getElementByID()
中。我正在使用我自己制作的这个
$.fn.uniqueId = function(idlength){
var charstoformid = '_0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz'.split('');
if (! idlength) idlength = 10;
var getId = function() {
var uniqid = '';
for (var i = 0; i < idlength; i++) {
uniqid += charstoformid[Math.floor(Math.random() * charstoformid.length)];
}
return uniqid;
}
return $(this).each(function(){
var id = getId()
while ( $("#"+id).length ) {
id = getId();
}
$(this).attr("id", id);
});
}
它有一个生成随机字符链的函数,然后确保生成的字符是唯一的(有0.000001%的可能性 - 但这是可能的),然后更改ID。
您可以使用增加变量和追加的方式来创建唯一的DIV ID代码,如下所示:
var x = 1;
var wrapper = $('.field_wrapper'); //Input field wrapper your div Add in this Class
var fieldtext = '<div ID="product_'+x+'"><label id="label_'+x+'" for="field_'+x+'"></label><input type="text" id="field_'+x+'" name="field_'+x+'" value=""/></div>'; //New input field html
$(wrapper).append(fieldtext); // Add field html
x++;