2013-02-08 2 views
1

Мне нужно получить высоту из трех div, добавить их вместе и посмотреть, отлична ли позиция прокрутки, чем это число. Сейчас я могу получить высоту одного элемента, но как я могу добавить других?Получить высоту нескольких div с jquery

В принципе, я хочу писать "если scroll_top больше, чем высота DIV 1 + 2 + ДИВ 3"

var scroll_top = $(window).scrollTop(); 

if ((scroll_top > $('.nav-bar-fixed').height()) { 
    alert('sometext'); 
} 

ответ

1

Попробуйте это:

$(document).ready(function() { 
var limit =$('.myEle1').height() + $('.myEle2').height() + $('.myEle3').height(); 
    $(window).scroll(function() { 
     var scrollVal = $(this).scrollTop(); 
     if (scrollVal > limit) { 
      //do something. 
     } 
    }); 
});​ 

Here is a fixed nav sample и source.

8

Почему не просто так?

var h = 0; 
$('#div1, #div2, #div3').each(function(){ h+=$(this).height() }); 
+0

Сохранено меня от написания! –

4

Это должно сделать трюк.

Working example on JS Bin.

HTML:

<div class="nav-bar-fixed"></div> 
    <div class="nav-bar-fixed"></div> 
    <div class="nav-bar-fixed"></div> 

CSS:

.nav-bar-fixed { 
    height: 200px; 
} 

JavaScript:

var scroll_top = $(window).scrollTop(), 
    $navBarFixed = $('.nav-bar-fixed'), 
    totalHeight = 0; 

$.each($navBarFixed, function() { 
    totalHeight += $(this).height(); 
}); 

if (scroll_top > totalHeight) { 
    alert(totalHeight); 
} 
1

Вы могли бы реализовать эту функцию на основе JQuery:

(function ($) { 
    $.fn.sumHeights = function() { 
     var h = 0; 
     this.each(function() { 
     h += $(this).height(); 
     }); 
     return h; 
    }; 
})(jQuery); 

А затем назовите это так:

$('div, .className, #idName').sumHeights();