jquery删除表行

时间:2010-12-21 03:53:35

标签: javascript jquery animation

我在删除表格行时遇到问题,我可以突出显示红色行但是当我尝试删除它时,幻灯片功能会混乱。我已将它们包裹在一个div中,但我不知道如何访问tr的孩子,然后是那个孩子?

$('#test tr:not(:first)').click(function()
        {           
            $(this).css("background-color","red");  

            $(this).children("td div").slideUp(function()
            {    
                $(this).parent().remove(); 
            });              
        });

问题在于这一行:

$(this).children("td div").slideUp(function()

我也试过

$(this).children("td").children("div").slideUp(function()

向上滑动仅删除第一列。

<table border="1" width="600" cellspacing="0" cellpadding="0" id="test">
    <tr>
        <td><b>First Name</b></td>
        <td><b>Last Name</b></td>
        <td><b>Address</b></td>
        <td><b>Town</b></td>

    </tr>

    <tr>
        <td><div>First Name</td>
        <td>Last Name</td>
        <td>Address</td>
        <td>Town</div></td>

    </tr>

</table>

我是否需要使用<td>代码包装每个div的内容?

由于

1 个答案:

答案 0 :(得分:5)

调用children("td div")会找到与选择器匹配的所有直接子项。 (所有<div>的孩子恰好在<td> s内) 由于所有直系儿童都是<td>,因此无法与之匹敌。

致电children("td").children("div")会在所有<div>内找到所有<td>
因此,它会找到你唯一的<div>

编辑:您可以使用jQuery创建包装元素; see my blog post

$('#test tr:not(:first)').click(function() {           
    $(this).css("background-color","red");  

    $(this).children().wrapInner('<div>').children().slideUp(function() {    
        $(this).closest('tr').remove();
    });
});

Demo