Обнаружение присутствия полосы прокрутки в DIV с помощью jQuery?
Я хочу определить наличие полосы прокрутки в DIV, используя jQuery. Я думал использовать $('div').scrollTop()
, но возвращает 0 в обоих случаях, когда полоса прокрутки находится вверху и когда полосы прокрутки вообще отсутствуют.
Любые идеи ребята?
Ответы
Ответ 1
Предполагая, что overflow
в div есть 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;
Ответ 2
// 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 */ }
Ответ 3
Я буду пересматривать то, что было упомянуто выше, поскольку вы запрашиваете jQuery
var div= $('#something');
var hasVerticalScrollbar= div[0].scrollHeight > div[0].clientHeight;
var hasHorizontalScrollbar= div[0].scrollWidth > div[0].clientWidth;
Это связано с тем, что scrollHeight
и scrollWidth
являются свойствами DOM.
Ответ 4
Ну, я нашел решение, выполнив следующие действия:
Оберните содержимое, которое растет с помощью DIV, затем я обнаруживаю, что присутствует (вертикальная) полоса прокрутки, сравнивая высоту wrapperDiv
с высотой containerDiv
(которая обычно имеет полосу прокрутки, если содержимое слишком большой).
Если высота wrapperDiv
больше высоты containerDiv
, тогда есть полоса прокрутки, если она меньше, тогда нет полосы прокрутки.
<DIV id="containerDiv" style="width:100px;height:100px;overflow:auto;">
<DIV id="wrapperDiv">
.... content here...
</DIV>
</DIV>