2009-08-20 6 views
1

테이블에서 행을 삭제할 때 "slideUp"애니메이션을 사용하기 위해 jQuery 코드를 작성했습니다. 애니메이션이 매끄럽게 보이기 위해서 행의 각 TD의 내용을 DIV 태그로 감싸고 DIV의 slideUp 함수를 호출하여 애니메이션 완료시 실제 TD를 제거했습니다. 그 코드는 다음과 같습니다 :jQuery에서 테이블 행 삭제 애니메이션하기

$("tr[id$=" + rowID + "]").children("td").each(function() { 
    $(this).children("div").slideUp(function() { 
     $(this).parent().remove(); 
    });   
}); 

지금까지 그렇게 좋았습니다. 그러나, 나는이 코드는 단지 그 내용을 실제 TR을 제거하지 않는 것으로 나타났습니다, 그래서 TR을 제거하려면 다음 줄을 추가 :

$("tr[id$=" + rowID + "]").remove(); 

문제는 내가 선 위에서 추가 한 후, 애니메이션을 종료하는 것이있다 일. 즉, 행은 멋진 슬라이딩 효과없이 사라집니다. 아무도 이것이 왜 그렇게인지, 그 문제를 해결하는 방법을 알고 있습니까?

+0

그것을 확인? 부모() 뒤에 그것을 추가합니다. remove() 그리고 그것은 나를 위해 잘 작동합니다. – seth

+0

Hey Sett, 내가 올린 직후에 행 제거 선을 추가했습니다. 빠른 피드백에 감사드립니다! –

답변

1

애니메이션 요소가 모두 포함 된 tr을 제거 했으므로 요소가 없으며 애니메이션이 없습니다. slideUp 모두 동일한 시간을 가져야한다고 가정하면 마무리 통화 콜백을 $(this).parent().remove()에서 $(this).closest('tr').remove()으로 변경할 수 있습니다.

+0

나는 항상이 사이트의 응답 속도에 놀란다. 빠른 답장을 보내 주셔서 감사합니다, hobbs. 애니메이션 요소가 포함 된 tr 제거의 결과에 대해 무슨 뜻인지 이해합니다. 그러나 이러한 작업이 순차적으로 발생했다고 생각합니다. 그렇지 않은 것 같습니다. 자바 스크립트의 비동기 성격은 매번 나를 잡아 먹는다! 너의 속임수는 아주 잘 풀렸다. 감사! –

+0

음, 실제로 타이머 이벤트에서 작업하기 때문에 비동기식 인 애니메이션 (예 : slideUp)입니다.하지만 어쨌든 완료 될 때까지 기다리지 않으므로 애니메이션이 나오기 전에 발사가 시작되었습니다. 제대로 시작할 수있는 기회. – hobbs