html元素的jQuery克隆问题

时间:2013-07-08 06:20:27

标签: jquery html

我正在尝试克隆HTML元素(文本框)&它与jQuery 1.4.2一起工作正常但在我的项目中我使用的是jQuery 1.9.1。

问题是,在jQuery 1.9.1中,即使将值设置为null,它也会克隆文本框的值。

这是demo

var i = 1;
$("button").click(function() {
  $("table tr:first").clone().find("input").each(function() {
    $(this).attr({
      'id': function(_, id) { return id + i },
      'name': function(_, name) { return name + i },
      'value': ''               
    });
  }).end().appendTo("table");
  i++;
});

谢谢。

2 个答案:

答案 0 :(得分:2)

使用prop()代替attr(),如果使用最新的jquery(1.6 +)..

  

例如,应检索selectedIndex,tagName,nodeName,nodeType,ownerDocument,defaultChecked和defaultSelected,并使用.prop()方法进行设置。在jQuery 1.6之前,这些属性可以使用.attr()方法检索,但这不在attr的范围内。它们没有相应的属性,只是属性。

试试这个

var i = 1;
$("button").click(function() {
  $("table tr:first").clone().find("input").each(function() {
   $(this).prop({
    'id': function(_, id) { return id + i },
    'name': function(_, name) { return name + i },
    'value': ''               
  });
}).end().appendTo("table");
i++;
});

或使用value使用attr()

而不是使用.val('')查找属性var i = 1; $("button").click(function() { $("table tr:first").clone().find("input").each(function() { $(this).attr({ 'id': function(_, id) { return id + i }, 'name': function(_, name) { return name + i } }).val(''); }).end().appendTo("table"); i++; });
{{1}}

fiddle here

答案 1 :(得分:0)

使用.val()设置值而不是使用值属性

var i = 1;
$("button").click(function() {
    $("table tr:first").clone().find("input").each(function() {
        $(this).attr({
            'id': function(_, id) { return id + i },
            'name': function(_, name) { return name + i }
        }).val('');
    }).end().appendTo("table");
    i++;
});

演示:Fiddle