2012-03-26 2 views
0

У меня есть DIV, который имеет высоту встроенный набор, чтобы быть 100% высоты окна браузера:Скрыть/DIV с JavaScript, если DIV имеет скроллбар

element.style { 
    height: 400px; 
} 
#scrollable-div { 
    overflow-x: hidden; 
    overflow-y: scroll; 
    position: relative; 
    width: 270px; 
} 

С JS или JQuery, я хочу, чтобы определить, есть ли у этого div в настоящее время полоса прокрутки, и если да, скройте/покажите другой div. Есть предположения?

+0

Это может помочь вам http://stackoverflow.com/questions/681087/how-can-i-detect-a-scrollbar-presence-using-javascript-in-html-iframe –

+0

Я считаю, что этот пример просто обнаруживает если на всей странице есть полоса прокрутки, а не отдельный div ... –

+0

Да, я знаю, я просто подумал, что это может быть полезно и может быть изменено =) –

ответ

0

Вы можете использовать эту функцию, чтобы знать, если элемент имеет скроллбар:

$(document).ready(function() { 
var mydiv = $('#scrollable-div'); 
console.log(mydiv1[0].scrollHeight); 
console.log(mydiv1.height()); 
if (mydiv1[0].scrollHeight > mydiv1.height())​ { 
    console.log(1); 
    //Has scrollbar 
} 
    else { 
     console.log(2); 
    //Dont has scrollbar 
    } 
​}); 
0

Я предлагаю иметь другой DIV, который содержит контент и находится в пределах scrollable-div. Это поможет отслеживать высоту содержимого, для которого вы должны выполнить логику.

if ($('#scrollable-inner').height() > $('#scrollable-div').height()) 
    $('#dependent-div').hide(); 
else 
    $('#dependent-div').show(); 

Посмотреть полный код & демо на этом jsFiddle.

+0

Когда я пытаюсь это сделать, мои значения для обоих всегда одинаковы. Мой внешний div имеет встроенную высоту, и внутренний div должен быть установлен на 100%, чтобы разрешить прокрутку ... так что они оба заканчиваются одинаково. –

+0

Это потому, что вы явно установили внутренний div, чтобы он соответствовал высоте его родителя. Точка внутреннего div должна отслеживать только высоту содержимого (и предпочтительно ничего больше), поэтому оставлять его для определения собственной высоты является ключевым. Он работает, если вы удаляете 'height: 100%;' из внутреннего div? –

Смежные вопросы