要素がクリックされてプレビューがレンダリングされる位置に表示される、絶対に配置された元々非表示の div があります (プレビューの上部の位置は、クリックされた要素の上部に並んでいます)。クリックされている要素が低い位置にある場合、プレビューは元のページの境界よりも少し下にレンダリングされ、スクロールが必要になります。プレビューを上に移動して、前のページの下端に下端を合わせたいと考えています。問題は、私が使用するコードがページの高さに期待されるものを返さないことです (プレビューの高さとクリックされた要素の上部の位置の合計よりも大きい)。
コードは次のとおりです: ファイル 1:
jQuery('elementClicked').live('click',function(){
...
jQuery("previewDiv").setTopAtClickedElement(jQuery(this));
...
}
ファイル 2:
jQuery.fn.setTopAtClickedElement = function (element) {
//original positioning
this.css('top', element.offset().top + 'px');
// the troublesome part where the eventual correction should be done
if (element.offset().top + this.height() > jQuery(document).height())
{
this.css('top', jQuery(document).height() - this.height() + 'px');
}
}
で提案されているように、ドキュメントの高さの測定に Math.max(document.body.scrollHeight, document.body.offsetHeight, document.documentElement.clientHeight, document.documentElement.scrollHeight, document.documentElement.offsetHeight) を使用すると、同様のことが起こりますリンク
コードのこの厄介な部分をどのように実装するべきかについて何か提案はありますか?
私が十分に明確でない場合は教えてください、ありがとう、