2011-08-29 2 views
8

이 질문은 이전에 질문 된 적이 있지만 이전에 언급 된 것보다 다른 문제가있는 것 같습니다. 나는 테이블을 가지고 있고, 테이블 행을 사라지게하고 테이블 행을 DOM에서 제거하는 삭제 링크를 각 행에 갖기를 원합니다. 첫 번째 문제는 jQuery fadeOut 이펙트를 테이블 행에서 작동시키지 못했고 실제로 행의 td 요소에서 fadeOut을 호출해야한다는 것을 알았습니다. 스팬 요소는 TD 안에 살고FadeOut 및 테이블 행 제거

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

    return false; 
}); 

가 클릭했을 때 내가 가장 가까운 TR 요소를 찾은 다음 그 TD 요소의 각각에 페이드 아웃 기능을 가을 : 그래서, 여기 내 jJavascript입니다. 이것은 잘 작동합니다.

문제는 콜백 함수에서 'this'가 실제로 숨겨진 개별 td 요소가 아닌 window 요소를 참조한다는 것입니다. 내 이해에서 '이것'은 퇴색 된 요소를 언급하기로되어있었습니다.

아이디어가 있으십니까?

+2

http://jsfiddle.net/TBMnZ/ 나를 위해 잘 작동합니다 ... – opatut

답변

13

잡아가 "이"참조하고 그것을 전달합니다

$('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();      
     } 
    ); 
}); 

편집 : 나는 그의 jsFiddle에 쇼로, Opatut is right 생각 .