2013-07-08 116 views
0

我想克隆HTML元素(文本框)&其工作正常与jQuery 1.4.2,但在我的项目中,我正在使用jQuery 1.9.1。html元素的jQuery克隆问题

问题是,在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++; 
}); 

谢谢。

+0

我会说你的问题可能与在换做'.attr' vs ['.prop'](http://api.jquery.com/prop/)(其中在1.6.x中添加) – kalley

回答

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

fiddle here

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