2010-11-10 2 views

Antwort

11

Dies sollte

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

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

Nutzungs

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

EDIT:

Um diese Methode mit unsichtbaren Element zu verwenden, das div klonen, setzen Sie die Deckkraft auf 0, den Klon an den Körper anzuhängen, prüfen, ob der Klon die Bildlaufleiste hat und entfernen Sie dann die Klon:

var clone = $('#mydivid').clone(); 
clone.css('opacity', '0').appendTo('body'); 
if (clone.hasHorizontalScrollBar()) { 
    //do the job here 
} 
clone.remove(); 
+1

Ein paar Tippfehler für Sie behoben. +1 für eine ausgezeichnete Antwort, obwohl [das könnte in Opera spielen] (http://www.quirksmode.org/dom/w3c_cssom.html#t36). – lonesomeday

+0

@lonesomeday gut ich traf die meisten Browser ... Opera ist ein kleiner Teil des Marktes –

+0

Große Antwort Danke! – Dave

0

Sie den Text in einem anderen div wickeln konnte, und vergleichen Sie die Breite/Höhe des einen mit #myDiv. Wenn es größer ist, gibt es eine Scrollbar:

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

Beispiel:

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

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

.. Dies würde nicht funktionieren, wenn Padding oder Ränder auf der inneren div wäre, weil mydiv immer größer wäre. –

Verwandte Themen