FadeOut和删除表行

Nic*_*sen 8 html jquery html-table hide fadeout

我知道之前已经问过这个问题,但我似乎遇到的问题与之前提出的问题不同.我有一个表,我希望每一行都有一个删除链接,淡出表行,然后从DOM中删除表行.我的第一个问题是我无法获得jQuery fadeOut效果来处理表行,并发现你必须在行的td元素上调用fadeOut.所以,这是我的jJavascript:

$('span.deleteItem').live('click', function() {  
    $(this).closest('tr').find('td').fadeOut('fast', 
        function(){ 
            $(this).parents('tr:first').remove();                    
        });    

    return false;
});
Run Code Online (Sandbox Code Playgroud)

span元素位于td内部,因此我在单击时找到最接近的tr元素,然后在每个td元素上放置fadeOut函数.这非常有效.

问题是在回调函数中,'this'实际上是引用窗口元素而不是隐藏的单个td元素.根据我的理解,'this'应该引用淡出的元素.

有任何想法吗?

Dio*_*ane 14

抓住"this"引用并传递给它:

$('span.deleteItem').live('click', function() {  
    var here = this;
    $(this).closest('tr').find('td').fadeOut('fast', 
        function(here){ 
            $(here).parents('tr:first').remove();                    
        });    

    return false;
});
Run Code Online (Sandbox Code Playgroud)


小智 5

我认为这就是你要找的东西:

$('span.deleteItem').live('click', function() { 
    var tableRow = $(this).closest('tr');
    tableRow.find('td').fadeOut('fast', 
        function(){ 
            tableRow.remove();                    
        }
    );
});
Run Code Online (Sandbox Code Playgroud)

编辑:我认为Opatut是正确的,正如他的jsFiddle所示.