2012-08-22 3 views
1

) (오프셋 사용하기 전에 DOM 업데이트를 기다리는 그 크기를 가져옵니다 setTimeout0div.offset()으로 전송하는 것이 가장 좋은 방법입니까? DOM 업데이트 이벤트 나 다른 것을 바인딩 할 수 있습니까?jQuery를 내가 다음 숨겨진 요소를 보여주고 코드를 가지고

+1

당신이 .show()'에 기간을 통과하지 않는 경우를' 그것은'setTimeout' afaik가 필요없는 동기 동작이 될 것입니다. [바이올린] (http://jsfiddle.net/ult_combo/cAmjN/) –

+0

좋은 관찰. 그래서 나는'offset()'이 작동하지 않는다고 생각합니다. _until_ DOM 업데이트가 다른 것을 의미하도록했습니다. –

+1

그래, 몇 가지'console.log'를 해보면 값이 옳은 것을 알 수 있습니다. 그것은 당신의'bar' 함수 및/또는 당신이 작업을 수행하는 순서 (보통)와 관련이있을 수 있습니다. 격리 된 문제에 대해 다른 질문을 할 때 문제를 살펴 보겠습니다. '=]' –

답변

3

duration 매개 변수를 전달하지 않고 .show()을 호출하면 동기 동작이므로 setTimeout이 필요하지 않습니다. docs에서 : 변수없이

상기 .show() 방법

정합 소자가없는 애니메이션 즉시 공개한다 [...]의 요소를 표시하는 가장 간단한 방법이다. 이것은 디스플레이 속성이 원래 있던 것으로 복원된다는 점을 제외하고는 .css('display', 'block')과 거의 동일합니다. 당신은 그러나 기간을 지정하는 경우

, 당신은 애니메이션이 완료되면 실행될 콜백 함수를 전달할 수 있습니다

var div = $('div.foo').show(400, function() { 
    var offset = $(this).offset(); 
    bar(offset.top, offset.left); 
}); 
관련 문제