2010-03-03 67 views
1

我有以下幾點:的jQuery的insertBefore

<table id="StateNames"> 
<tr> 
<td><input name="StateName"></td> 
</tr> 
<tr><td>Wyoming</td></tr> 
<tr><td>Wisconsin</td></tr> 
<tr><td>West Virginia</td></tr> 
</table> 

我想

$('input').change(function() { 
    var StateName = $(this).val(); 
    insert <tr><td>StateName</td></tr> before Wyoming 
+1

這是真的懷俄明州前插入,或者是它的輸入字段行後插入,或者是它的第一個「非」狀態行之前插入? – 2010-03-03 20:15:02

回答

3

我假設你想要的行之後添加行,所述輸入元素是:

$('input').change(function() { 
    var StateName = $(this).val(); 
    $(this).closest('tr').after('<tr><td>'+StateName+'</td></tr>'); 
}); 

如果您明確需要將其插入懷俄明行之前,則最好以某種方式識別該行–的ID標籤將是適當的:

<tr id="wyoming"><td>Wyoming</td></tr> 
<tr id="wisconsin"><td>Wisconsin</td></tr> 
<tr id="west-wirginia"><td>West Virginia</td></tr> 

 

$('input').change(function() { 
    var StateName = $(this).val(); 
    // Insert before Wyoming: 
    $('#wyoming').before('<tr><td>'+StateName+'</td></tr>'); 
}); 

您還可以使用:contains()僞類,如果你不希望把你的行(這將是更快的那樣):

$("tr:contains('Wyoming')").before('<tr><td>'+StateName+'</td></tr>'); 
+0

在「}」之後有一個「)」缺失... – 2010-03-03 20:11:17

+0

是的,我很難解釋我想要什麼,卻不能指向「那裏」並說「就在那裏」。 但你的假設是正確的。 – 2010-03-03 20:52:09

1

像這樣:

var newElem = $('<tr></tr>').append($('<td></td>').text(StateName)); 
$(this).closest('tr').after(newElem); 

或者:

$('tr:contains(Wyoming)').before(newElem);