2010-11-10 28 views

Trả lời

11

này nên làm việc

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

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

Cách sử dụng

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

EDIT:

Để sử dụng phương pháp này với yếu tố vô hình, clone div, thiết lập Opacity của nó đến 0, thêm clone cho cơ thể, kiểm tra xem bản sao có thanh cuộn và sau đó loại bỏ các clone: ​​

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

Sửa lỗi chính tả cho bạn. 1 cho một câu trả lời tuyệt vời, mặc dù [điều này có thể chơi trong Opera] (http://www.quirksmode.org/dom/w3c_cssom.html#t36). – lonesomeday

+0

@lonesomeday Tôi đã đánh hầu hết các trình duyệt ... Opera là một phần nhỏ của thị trường –

+0

Cảm ơn câu trả lời tuyệt vời! – Dave

0

Bạn có thể quấn văn bản trong div khác, và so sánh chiều rộng/chiều cao của một rằng với #myDiv. Nếu đó là cao, có một thanh cuộn:

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

Ví dụ:

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

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

.. Điều này sẽ không hoạt động nếu có đệm hoặc lề trên div bên trong, vì mydiv sẽ luôn lớn hơn. –

Các vấn đề liên quan