在表行上使用.remove会生成display:none样式

时间:2015-05-29 14:20:47

标签: javascript jquery html

我正在尝试从我的表中删除一行。每行包含文本输入,编辑按钮和删除按钮。当我单击删除时,我希望删除整行。这是我的jquery代码:

$(document).on('click', 'button#delete_x',  function () {
    $(this).closest('tr').fadeOut(500, function(){
        $(this).parents('tr:first').remove();
    });
});

我无法访问行ID,因此我将获得最接近删除按钮的tr。我的问题不是删除行,而是显示新的内联样式:我的tr中没有出现!我想知道为什么会这样?我在mac yosemite上使用safari浏览器。

3 个答案:

答案 0 :(得分:1)

fadeOut()与删除行不同。你想要.remove()

答案 1 :(得分:0)

这是因为您使用的是.fadeOut()。您希望使用jquery .remove()简单地删除元素:

$('[id*=lkid]')

P.S。我想看一下你的html标记副本。

答案 2 :(得分:0)

您正在尝试删除动画行的父级而不是行本身的行。

这是因为实际的"这个"值取决于调用站点,或者与大多数jquery方法一样,是否与明确强制的内容有关。

在jquery"这个"通常被迫成为你所采取行动的元素。所以当你把回调传递给fadeOut()方法时,在这个回调中,"这个"将指向淡出的元素(在这种情况下是您要删除的行)。

请改为尝试:

$(document).on('click', 'button#delete_x',  function () {
    $(this).closest('tr').fadeOut(500, function(){
        $(this).remove();
    });
});

......甚至更清楚:

$(document).on('click', 'button#delete_x',  function () {
    var me = $(this).closest('tr');
    me.fadeOut(500, function(){
        me.remove();
    });
});