2

初始情况如下所示:

<div id="bigDiv">
    <div><input type="file"/></div>
</div>

克隆后的期望结果:

<div id="bigDiv">
    <div><input type="file"/></div>
    <div><input type="file"/></div>
</div>

我试过以下语句:

var elm = $('#bigDiv :input[type=file]').change(function(event) {
    console.log('changed');
    $('#bigDiv :input[type=file]').eq(0).clone(true).val('').appendTo('#bigDiv');
});

这行得通。我的问题是,如何将这个新的文件输入元素附加到一个新的 div 元素中,该元素之前也必须创建?(见上面的预期结果)

我认为我的 jQuery 语句也是可以改进的。

4

3 回答 3

5

克隆整个div. 试试这个:

var elm = $('#bigDiv :input[type=file]').change(function(event) {
    var $newDiv = $('#bigDiv div').first().clone(true).appendTo('#bigDiv');
    $('input[type="file"]', $newDiv).val('');
});

示例小提琴

于 2013-10-28T15:50:55.753 回答
0

一个班轮: http: //jsfiddle.net/6QL3k/2/,也可以创建

var elm = $('#bigDiv').on('change',' :input[type=file]',function(event) {
    console.log('changed');
     $(this).clone().appendTo($(this).parent().parent()).wrap('<div></div>');    
});

http://jsfiddle.net/6QL3k/

  var elm = $('#bigDiv :input[type=file]').change(function(event) {
      console.log('changed');
      var next = $(this).clone();
      var wrapNext = $('<div></div>');
      wrapNext.append(next);
      $(this).parent().after(wrapNext);
  });
于 2013-10-28T15:53:46.577 回答
0

不使用克隆的非常简单的方法

var div = $("#bigDiv").find("div").first().html();
$("input").first().after(div);

工作演示

于 2013-10-28T15:55:09.037 回答