0

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

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

这是演示

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++;
});

谢谢你。

4

2 回答 2

2

如果使用最新的 jquery (1.6+) ,请使用prop()而不是attr()..

例如,应使用 .prop() 方法检索和设置 selectedIndex、tagName、nodeName、nodeType、ownerDocument、defaultChecked 和 defaultSelected。在 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()use来改变属性.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++;
});

在这里摆弄

于 2013-07-08T06:27:24.070 回答
0

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

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++;
});

演示:小提琴

于 2013-07-08T06:25:09.993 回答