Полоса прокрутки появляется / исчезает событие в jQuery? - PullRequest
16 голосов
/ 05 апреля 2010

Есть ли в jQuery простой способ определить, когда полосы прокрутки появляются и исчезают на элементе div с переполнением: auto?(Как событие? Скрещенные пальцы ...)

(Я бы предпочел не смотреть на высоту содержимого div)

Ответы [ 3 ]

7 голосов
/ 02 апреля 2011

Другой способ добиться этого - проверить наличие полос прокрутки с помощью 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);
6 голосов
/ 07 апреля 2010

Как говорили другие, простого пути не существует. Вот код, который я использовал в прошлом для определения наличия полосы прокрутки.

// 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, и, вероятно, оно будет работать только в том случае, если вы вызываете его для видимых элементов, но это лучше, чем начинать с нуля.

1 голос
/ 05 апреля 2010

Насколько я знаю, для этого нет события.
Однако вы "могли бы" написать свое собственное специальное событие для этого, я думаю, вы должны проверить высоту и ширину.* Должна быть возможность обнаруживать полосы прокрутки, если .innerHeight превышает значение .outerHeight элемента.

...