2013-07-08 197 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