Scrollbar появляется / исчезает событие в jQuery?
есть ли простой способ в jQuery определить, когда полосы прокрутки появляются и исчезают на div, который имеет переполнение:auto? (Как событие? Скрестил пальцы...)
(Я бы предпочел не смотреть на высоту содержания div)
3 ответов
Как говорили другие, нет простого способа. Вот код, который я использовал в прошлом, чтобы определить, присутствует ли полоса прокрутки.
// Used like $('#my-id').hasScrollbar();
jQuery.fn.hasScrollbar = function() {
var scrollHeight = this.get(0).scrollHeight;
//safari's scrollHeight includes padding
if ($.browser.safari)
scrollHeight -= parseInt(this.css('padding-top')) + parseInt(this.css('padding-bottom'));
if (this.height() < scrollHeight)
return true;
else
return false;
}
вам нужно будет вручную вызвать это после добавления или удаления содержимого из div, и это, вероятно, будет работать, только если вы вызовете его на видимых элементах, но это лучше, чем начинать с нуля.
другой способ достичь этого-проверить, есть ли полосы прокрутки с помощью scrollLeft или scrollTop:
//nudge the scrollbar away from its starting position
$('#your_selector').scrollLeft(1);
//A value of 0 is assigned if the scrollbars are at their default position,
//or are abscent
if($('#your_selector').scrollLeft() !== 0) return true;
//put the scrollbar back to its starting position
$('#your_selector').scrollLeft(0);
насколько я знаю, для этого нет события.
Тем не менее, вы "могли бы" написать свое собственное специальное мероприятие для этого, я думаю, вам нужно проверить
для высоты и ширины.
должно быть возможно обнаружить полосы прокрутки, если .innerHeight
exceds в .outerHeight
значение элемента.