FadeOut和删除表行

时间:2011-08-29 18:43:31

标签: jquery html 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;
});

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

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

有什么想法吗?

2 个答案:

答案 0 :(得分: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;
});

答案 1 :(得分:5)

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

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

编辑:我认为Opatut is right,如jsFiddle中所示。