使用jQuery检测DIV中滚动条的存在?

我想使用jQuery检测DIV中是否存在滚动条。 我想使用$('div').scrollTop()但在滚动条位于顶部且根本没有滚动条的情况下返回0。

任何想法的家伙?

假设div上的overflowauto

 var div= document.getElementById('something'); // need real DOM Node, not jQuery wrapper var hasVerticalScrollbar= div.scrollHeight>div.clientHeight; var hasHorizontalScrollbar= div.scrollWidth>div.clientWidth; 
 // 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; 

这是因为scrollHeightscrollWidth是DOM属性。

好吧,我最终通过执行以下操作找到了解决方案:

用DIV包装增长的内容,然后我通过比较wrapperDiv的高度和containerDiv的高度(如果内容太大通常有滚动条)来检测是否存在(垂直)滚动条。

如果wrapperDiv的高度大于containerDiv的高度,则有一个滚动条,如果它更小,则没有滚动条。

 
.... content here...