2011-05-04 5 views
1

빠른 질문 : 페이지에서 요소를 제거하고 해당 요소에 새 요소를 다시 추가하려고합니다.div에 항목을 제거한 다음 페이지 뷰를 강제로 추가하십시오.

jQuery("#branding").fadeOut("slow", function() { 
    jQuery("#branding").empty(); 
    jQuery("#branding").append("<a class='headerimg' href='/'></a>"); 
    jQuery("#branding .headerimg").append(imageElement); 
    jQuery("#branding").fadeIn("slow", function() { 
     self.working = false; 
    }); 
}); 

이 시점까지는 모두 훌륭합니다. 이전 요소가 제거되고 새 요소가 삽입됩니다. 그러나 페이지를 아래로 스크롤하면 브라우저가 매번 맨 위로 돌아갑니다. 생각?

+0

이 이미지는 페이지 상단에 삽입되어 있습니다. 페이지가 상단뿐만 아니라 요소로 다시 스크롤되는 것은 전적으로 가능합니다. –

+0

이 기능을 구현하는 요소는 무엇입니까? DOM의 이벤트에서 호출 된 함수에 있나요? – BradBrening

+0

JSFiddle에 모든 것을 넣는 HTML을 게시 할 수 있습니까? – pixelbobby

답변

2

대신 fadeTo()을 사용해보세요. this blog entry을 참조하십시오.

+0

이것은 훌륭했으며, 가장 간단한 해결책이었다. 감사! –

2

브라우저가 페이지의 높이를 더 이상 알지 못하기 때문에 처음부터 측정하고 다시 측정했지만 새로운 요소가 렌더링 될 때까지 얼마나 오랫동안 기다릴 지 모르기 때문에 이러한 현상이 발생한다고 생각합니다.

다른 높이의 탭 그룹간에 변경하는 경우 jQuery UI 탭과 같은 경우에도 마찬가지입니다.

간단히 말해서, 당신은 무엇을하고 싶습니까? 브라우저가 마법사가 아닙니다.

+0

마법사 비교를 위해 +1 ... – pixelbobby

+0

내 이미지가 모두 같은 크기라고 가정하면 크기가있는 div에 랩핑하고 처리 할 수 ​​있습니다. –

+0

소리가 좋아야합니다. – pixelbobby

0

#branding을위한 CSS는 무엇입니까? 몸의 요소가 밀려 들고, 나머지 div의 위치를 ​​설정하는 방법으로 돌아옵니다.

최악의 경우, 새로운 divs 높이를 기준으로 모든 요소가 제거되는 위치의 상단을 업데이트하려면 jquery 함수를 추가해야합니다.

또는 CSS를 다시 작성하고 요소를 상대 위치로 유지할 수 있습니다.

0

#branding 요소가 동일한 높이로 유지되는 경우 바깥 쪽 <div id="brandingBox" style="height:50px; display:block;">...your stuff...</div>에 포장하면 문제가 없어집니다. #branding 요소의 높이를 변경하려면 수직 스크롤이 끝날 것입니다. 그렇다면 jquery 스크립트를 실행하기 전에 javascript를 사용하여 페이지에서 위치를 찾은 다음 위치를 재설정하십시오. 높이의 변화에 ​​따라 조정된다.

관련 문제