16

スクロールバーがいつ表示され、overflow:auto を持つ div で消えるかを jQuery で検出する簡単な方法はありますか? (イベントのような?指が交差した...)

(divのコンテンツの高さを見る必要はありません)

4

3 に答える 3

7

これを実現する別の方法は、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);
于 2011-04-02T12:29:11.353 に答える
6

他の人が言ったように、簡単な方法はありません。スクロールバーが存在するかどうかを検出するために過去に使用したコードを次に示します。

// 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 にコンテンツを追加または削除した後、これを手動で呼び出す必要があります。おそらく、表示されている要素で呼び出す場合にのみ機能しますが、最初から始めるよりはましです。

于 2010-04-06T23:00:55.427 に答える
1

私の知る限り、そのためのイベントはありません。
ただし、そのために独自の特別なイベントを「作成」できます。高さと幅を確認する必要があると思います。

要素の値を.innerHeight超えた場合、スクロールバーを検出できるはずです。.outerHeight

于 2010-04-05T11:21:51.707 に答える