2011-08-29 72 views
8

我知道这个问题之前已被问过,但我似乎有一个不同的问题比以前解决。我有一个表,我希望每行有一个删除链接,将表格行淡出,然后从DOM中删除表格行。我的第一个问题是,我无法使jQuery fadeOut效果在表行上工作,并发现您必须实际调用行的td元素上的fadeOut。所以,这里是我的jJavascript:FadeOut和删除表格行

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

    return false; 
}); 

span元素过着TD里面,所以我找到最接近的tr元素被点击时,然后落在它的每个td元素的淡出功能。这很好。

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

任何想法?

+2

http://jsfiddle.net/TBMnZ/适合我... – opatut

回答

13

抓住 “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; 
}); 
5

我认为这是你在找什么:

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

编辑:我觉得Opatut is right,因为展现在他的jsFiddle