4

each以下のステートメントに非表示の div を含める方法を見つける必要があります。答えが見つからないようです。隠し要素の子だけではないので、に基づいて書くことはできませんdisplay:none

$("div").each(function(){
    if ($(this).hasScrollBar()){
        $(this).addClass('scrollable');
    }
});

hasScrollBar 関数:

(function($) {
    $.fn.hasScrollBar = function() {
        return this.get(0).scrollHeight > this.innerHeight();
    }
})(jQuery);
4

2 に答える 2

8
$('div')         finds all divs
$('div:hidden')  finds only hidden divs
$('div:visible') finds only visible divs
于 2012-12-27T00:34:23.863 に答える
0

スクロールバーが表示された場合に必要なすべての要素を特定しようとしているようです。1 つの方法は、要素のクローンを作成し、オフスクリーンでレンダリングしてから、スクロールバーが必要かどうかを判断することです。

$("div").each(function(){
    var clone = $(this).clone();
    clone.show()
         .css('position','fixed')
         .css('left','-10000000');
    $(document).append(clone);
    if (clone.hasScrollBar()){
        $(this).addClass('scrollable');
    }
    clone.remove();
});
于 2012-12-27T00:58:30.067 に答える