有没有办法通过JQUERY克隆函数自定义html让我说我有一个div
<div id="my_Div" style="margin-right:14px;"> Name :
<input type="text" name="file_name[]" id="file_name" class="validate[required]"/>
Choose File :
<input type="file" name="upload_file[]" id="upload_file" class="validate[required]" onChange="getFileExtension('upload_file');"/>
</div>
没有克隆功能
$('#my_Div').clone().appendTo("body");
我可以制作,因为它是克隆HTML,但我想自定义
<input type="text" name="file_name[]" id="file_name" class="validate[required]"/>
即
<input type="text" name="file_name[]" id="file_name1" class="validate[required]"/>
<input type="text" name="file_name[]" id="file_name2" class="validate[required]"/>
<input type="text" name="file_name[]" id="file_name3" class="validate[required]"/>
任何帮助???
答案 0 :(得分:2)
如果我正确理解您的问题,您需要自定义您获得的克隆副本。虽然没有内置方式,但您可以采用您想要更改的逻辑并将其放入要调用的函数中,如下所示:
clonedElement.attr('id', function () {
// logic
});
可在此处找到更多详细信息:jQuery to clone a table with new id, how to write below code collectively
答案 1 :(得分:1)
var i = 1;
var tmp = $('#my_Div').clone();
var inp = tmp.find('#file_name');
inp.attr('id', inp.attr('id')+i);
i++;
tmp.appendTo('body');
I would add class to all inputs, for example class="changeable" and add:
$('.changeable').on('change', function() {
//do something
});
答案 2 :(得分:0)
不,你不应该在克隆函数中或克隆函数内执行此操作,尤其是不要通过操作html字符串。最好做这样的事情:
var c = $('#my_Div').clone().appendTo('body');
var i = c.find("#file_name").attr('id', "file_name0");
for (var i=1; i<3; i++)
i.clone().appendTo(c).attr('id', "file_name"+i);
但是,我不认为同一类型的多个元素确实需要(编号)ID。描述性的类名应该足够了。