2010-11-10 13 views

Odpowiedz

11

To powinno działać

$.fn.hasVerticalScrollBar = function() { 
    return this[0].clientHeight < this[0].scrollHeight; 
} 

$.fn.hasHorizontalScrollBar = function() { 
    return this[0].clientWidth < this[0].scrollWidth; 
} 

Wykorzystanie

alert($('#mydivid').hasHorizontalScrollBar()); 
alert($('#mydivid').hasVerticalScrollBar()); 

EDIT:

Aby skorzystać z tej metody z niewidzialnego elementu, klonowanie div, ustawić przezroczystość 0, dołącz klona do ciała, należy sprawdzić, czy klon ma paska przewijania, a następnie usunąć klon:

+1

Naprawiono dla ciebie kilka literówek. +1 za doskonałą odpowiedź, chociaż [to może grać w Operze] (http://www.quirksmode.org/dom/w3c_cssom.html#t36). – lonesomeday

+0

@lonesomeday cóż, trafiłem na większość przeglądarek ... Opera to niewielka część rynku. –

+0

Świetna odpowiedź dzięki! – Dave

0

Można zawinąć tekst w innym div, i porównać szerokość/wysokość, że jeden z #myDiv. Jeśli to jest wyższy, jest pasek przewijania:

<div id="myDiv" style="..."> 
    <div id="inner">random amount of lorem ipsum...</div> 
</div> 

Przykład:

if($('#inner').height() > $('#myDiv').height()){ 
    alert('vertical scrollbar'); 
} 

if($('#inner').width() > $('#myDiv').width()){ 
    alert('horizontal scrollbar'); 
} 
+0

.. Nie działałoby, gdyby na wewnętrznym elem znajdowało się dopełnienie lub marginesy, ponieważ mydiv zawsze byłaby większa. –

Powiązane problemy