AJAXを介して新しいHTMLコンテンツを読み込んだ後、divのサイズを変更しようとしています。URLに特定のハッシュが存在する場合に特定のHTMLスニペットをロードするハッシュバンリンクシステムがあります。リンクを押してコンテンツをロードすると、divの高さのサイズが正しく変更されますが、ページを直接移動すると、ロードされたコンテンツの計算された高さは一貫して20px低くなります。
HTML:
<div id="help_page_header">
<h3>Need some help with searches?</h3>
<ul class="help_tabs">
<li class="help_tab"><a class="docs_link" rel="recommendations" href="#!/recommendations">Recommendations</a></li>
<li class="help_tab"><a class="docs_link" rel="whats_hot" href="#!/whats_hot">What's Hot</a></li>
<li class="help_tab"><a class="docs_link" rel="history" href="#!/history">History</a></li>
<li class="help_tab"><a class="docs_link" rel="misc" href="#!/misc">Additional Features</a></li>
</ul>
</div>
<div class="help_page_content">
<p>Select a help topic above!</p>
</div>
...
jQuery:
$(document).ready(function(){
if(window.location.hash)
{
loadContent(window.location.hash)
}
$(".docs_link").click(function(e){
$(".help_page_content").html("")
var fragment = this.hash
loadContent(fragment)
});
function loadContent(fragment)
{
fragment = fragment.slice(1).replace(/!\//g, "");
$(".help_page_content").load("./"+fragment+".html", function(){
var height = $("#ajax_page_wrap").outerHeight();
$(".help_page_content").animate({height: height}, 500);
});
}
});
明確にする例:
www.homepage.com/docs/に直接移動し、ヘルプリンクの1つをクリックしてコンテンツを読み込むと、高さが正しく計算されます。ただし、www.homepage.com / docs /#!/ historyに移動すると、計算された高さは常に本来よりも約20px低くなります。