2010-06-23 2 views
1

테이블이 있는데 행을 제거하면 slideUp로 애니메이션이 적용됩니다. jQuery 숨겨진 열이있는 행의 SlideUp

$(id).find("td div").slideUp 

나는 행에 slideUp를 사용하려면이 트릭을 사용 : animating-table-rows-with-jquery

모든 열이 표시되는 문제가 없지만, 나는 열을 숨겨 때, 그냥 아무 애니메이션 행을 제거합니다. slideUp에서 정상적인 동작을하는 것 같지만 애니메이션으로 작동하게하려면 속임수가 있습니까? 나는 td가 숨겨져 있는지 테스트 할 생각이었습니다. 아무것도하지 않았습니다. 그렇지 않으면 slideUp이 트릭을 수행 할 것이라고 생각하지 않습니다.

답변

0

그 이유는 모든 애니메이션이 완료된 후 slideUp에게 주어진 콜백이 호출되지,하지만 후 각 애니메이션이 완료됩니다. 숨겨진 열에있는 div이 보이지 않으므로 위로 움직이는 애니메이션을 수행 할 필요가 없습니다. 즉, 즉시 완료되며 따라서 콜백이 즉시 호출됩니다.

그러나 콜백은 전체 행을 제거합니다.

이 문제를 해결할 수있는 방법은 여러 가지가 있습니다. 자신이 가지고 있던 생각 (어쨌든 보이지 않는 div을 다루지 않음)은 작동해야하는 한 가지 방법입니다.

또 다른 방법은 콜백에서 수행하는 대신 시간을 설정하여 행을 제거하는 것입니다. 즉

$(id).find("td div").slideUp(function() { 
    $(this).remove();      // remove the div itself 
    if ($(id).find("td div").length == 0) // if none are left 
     $(id).remove();     // then remove the row 
}); 
+0

정말 좋은 대답 같은 것을, 나는 (이 내일 시험 할 것이다,이없는 경우

세 번째 방법은 남아있는 div의가있는 경우 콜백에서 확인 만 행을 제거하는 것입니다 나를 위해 일의 끝;), 그리고 내가 선택한 솔루션을 게시 할 수 있습니다. 고마워요. (jQuery에서 애니메이션이 작동하는 방법을 배우는 데 정말로 관심이 있습니다. 그런 정보를 어디에서 찾았습니까?). –

+0

@Michael Lumbroso : jQuery로 애니메이션 작업을하는 모든 사람들이 비슷한 문제에 어느 정도 시달렸습니다. 그런 다음 그 길을 따라 물건을 배웁니다. [jQuery 문서] (http://api.jquery.com/)는 실제로 꽤 좋습니다. – balpha

+0

귀하의 솔루션을 구현 했으므로 완벽하게 작동했습니다. 명확하고 철저하고 빠른 답변 덕분에 투표 할 수 있습니다.) Btw, 내 대답을 제출하기 전에 jQuery 문서를 확인했습니다 (항상 주제를 만들기 전에 할 ^^), 그러나 나는 이것으로 나를 도울 수있는 것을 발견하지 못했습니다. 다시 확인했는데 귀중한 프로 설명 없이는 더 이상 유용한 정보를 얻지 못했습니다. (내 나쁜 영어에 대한 애도, 문법 활용은 내 전문 분야가 아닙니다 : p) –