我希望使用jQuery检测DIV中是否存在滚动条。我想使用
$('div').scrollTop()
,但无论滚动条是否在顶部或根本没有滚动条,它都会返回0。有什么建议吗?$('div').scrollTop()
,但无论滚动条是否在顶部或根本没有滚动条,它都会返回0。有什么建议吗?overflow
属性值为 auto
:var div= document.getElementById('something'); // need real DOM Node, not jQuery wrapper
var hasVerticalScrollbar= div.scrollHeight>div.clientHeight;
var hasHorizontalScrollbar= div.scrollWidth>div.clientWidth;
jQueryElement.get(0)
获取其真实的DOM节点,参考链接:http://api.jquery.com/get。 - BalusC// plugtrade.com - jQuery detect vertical scrollbar function //
(function($) {
$.fn.has_scrollbar = function() {
var divnode = this.get(0);
if(divnode.scrollHeight > divnode.clientHeight)
return true;
}
})(jQuery);
例子:
if($('#mydiv').has_scrollbar()) { /* do something */ }
由于你在问 jQuery,我会修改上面 bobince 提到的内容。
var div= $('#something');
var hasVerticalScrollbar= div[0].scrollHeight > div[0].clientHeight;
var hasHorizontalScrollbar= div[0].scrollWidth > div[0].clientWidth;
scrollHeight
和scrollWidth
是DOM属性。我最终通过以下方式找到了解决方法:
使用 DIV 包装随内容而增长的内容,然后比较 wrapperDiv
的高度与包含滚动条的 containerDiv
的高度来检测是否存在(垂直)滚动条。
如果 wrapperDiv
的高度大于 containerDiv
的高度,则存在滚动条;否则不存在滚动条。
<DIV id="containerDiv" style="width:100px;height:100px;overflow:auto;">
<DIV id="wrapperDiv">
.... content here...
</DIV>
</DIV>