Javascript 无法使用jQuery删除祖先树

Javascript 无法使用jQuery删除祖先树,javascript,jquery,Javascript,Jquery,我试图删除选中复选框的表单中html表的行。 这是我的HTML: <table> <tr class="row"> <td><input type="text"></td> <td><input type="checkbox" value="Delete" name="foo"/></td> </tr>

我试图删除选中复选框的表单中html表的行。 这是我的HTML:

<table>
        <tr class="row">
            <td><input type="text"></td>
            <td><input type="checkbox"  value="Delete" name="foo"/></td>
        </tr>
        <tr class="row">
            <td><input type="text"></td>
            <td><input type="checkbox"  value="Delete" name="foo"/></td>
        </tr>
</table>
<input type="button" id="btnDelete" value="Remove Selected"/>
现在单击btnDelete,脚本将在警报显示时被调用。但是祖父元素(即
)不会随着子元素被删除而清空。因此,致病线似乎是:

obj.parents().eq(1).empty();
那么,我应该如何删除表行(即
)及其复选框已选中的所有子节点?

请尝试
$(obj).closest('tr').empty()(谢谢)

为什么不简单一点,试试这个:

尝试
$(obj).closest('tr').empty()(谢谢)

为什么不简单一点,试试这个:


obj
变量是对DOM元素的引用,而不是jQuery对象。试试这个:

$(obj).parents().eq(1).empty();
…以使现有代码正常工作。或者更好:

$(obj).closest('tr').remove();
请注意,
.empty()
并没有删除tr元素本身,它只是删除了它的所有内容,因此我建议
.remove()


演示:

变量是对DOM元素的引用,而不是jQuery对象。试试这个:

$(obj).parents().eq(1).empty();
…以使现有代码正常工作。或者更好:

$(obj).closest('tr').remove();
请注意,
.empty()
并没有删除tr元素本身,它只是删除了它的所有内容,因此我建议
.remove()

演示:

您可以尝试.has()函数,如

$('tr').has('input[name=foo]:checked').remove();
您的代码将减少到

$(function () {
    $('#btnDelete').on('click', function () {
        $('tr').has('input[name=foo]:checked').remove();
    });

});
您可以尝试使用如下的.has()函数

$('tr').has('input[name=foo]:checked').remove();
您的代码将减少到

$(function () {
    $('#btnDelete').on('click', function () {
        $('tr').has('input[name=foo]:checked').remove();
    });

});

谢谢你的回答。为我做了这份工作!!但是你会承认乌迈普的答案更好,因此我接受他的答案。既然你的答案也行,我就投你一票!!谢谢你的回答。为我做了这份工作!!但是你会承认乌迈普的答案更好,因此我接受他的答案。既然你的答案也行,我就投你一票!!将其更改为
.has('input[name=foo]:checked')
-当然-您将获得我的投票结果。:)也适合我!也很简单,所以我接受你的答案,投赞成票。谢谢+1.比起我自己的答案,我更喜欢这个。尽管我仍然建议使用
.remove()
而不是
.empty()
(假设不需要保留空tr)。但我还是建议按照NNNN的建议,在删除tr时必须使用.remove()而不是empty()。因此我编辑了您的答案。@rahulserver我最初使用
remove()来回答它
但后来将其更改为
empty()
。您的编辑被mods拒绝,因此我编辑了我的答案,并将其更改为
empty()
返回
remove()
将其更改为
。has('input[name=foo]:checked')
,以确保您得到了我的支持票。:)也适合我!也很简单,所以我接受你的答案,投赞成票。谢谢+1.比起我自己的答案,我更喜欢这个。尽管我仍然建议使用
.remove()
而不是
.empty()
(假设不需要保留空tr)。但我还是建议按照NNNN的建议,在删除tr时必须使用.remove()而不是empty()。因此我编辑了您的答案。@rahulserver我最初使用
remove()来回答它
但后来将其更改为
empty()
。您的编辑被mods拒绝,因此我编辑了我的答案,并将
empty()
更改回
remove()
不起作用的行应该是
$(obj).
而不是
obj…
不起作用的行应该是
$(obj).
而不是
obj…