2011-08-29 75 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