3 つの異なる div があり、すべて AJAX が設定されています。jScrollpane は、私が試したレンダリング順序に関係なく、私の div の 1 つで機能しません。
プラグインをデバッグした後contentHeight = pane[0].scrollHeight;
、スクロールの高さと幅が常に 0 であるこの特定の行に問題があることがわかりました。完全なスニペットの下
pane.css('overflow', 'auto');
if (s.contentWidth) {
contentWidth = s.contentWidth;
} else {
contentWidth = pane[0].scrollWidth;
}
contentHeight = pane[0].scrollHeight;
pane.css('overflow', '');
percentInViewH = contentWidth / paneWidth;
percentInViewV = contentHeight / paneHeight;
isScrollableV = percentInViewV > 1;
isScrollableH = percentInViewH > 1;
if (!(isScrollableH || isScrollableV)) {
elem.removeClass('jspScrollable');
pane.css({
top: 0,
width: container.width() - originalPaddingTotalWidth
});
removeMousewheel();
removeFocusHandler();
removeKeyboardNav();
removeClickOnTrack();
pane
元の elem に追加された、新しく作成された jsPane です。
pane = $('<div class="jspPane" />').css('padding', originalPadding).append(elem.children());
container = $('<div class="jspContainer" />')
.css({
'width': paneWidth + 'px',
'height': paneHeight + 'px'
}
).append(pane).appendTo(elem);
この特定の div の scrollHeight が常に 0 なのはなぜですか? 他の 2 つの div もトップ レベル (本体のみが親) ですが、問題のある div は非常に深いです。その上に 4 つの親 div があります。この問題は、親 div の高さの設定が原因であると思われます。でもどこか分からなかった?