Jquery克隆函数

时间:2012-07-16 12:41:10

标签: javascript jquery

有没有办法通过JQUERY克隆函数自定义html让我说我有一个div

<div id="my_Div" style="margin-right:14px;"> Name :
                <input type="text" name="file_name[]" id="file_name" class="validate[required]"/>
                &nbsp;&nbsp; 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]"/>

任何帮助???

3 个答案:

答案 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。描述性的类名应该足够了。