jQuery insertbefore

时间:2010-03-03 20:04:03

标签: jquery

我有以下内容:

<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

2 个答案:

答案 0 :(得分:3)

我假设您要在输入元素所在的行之后添加行:

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

如果您明确需要在包含Wyoming的行之前插入它,您最好以某种方式识别该行 - 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>');

答案 1 :(得分:1)

像这样:

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

或者:

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