2

我需要获取三个 div 的高度,将它们加在一起,看看滚动位置是否大于该数字。现在我可以得到一个元素的高度,但是我怎么能添加其他元素呢?

基本上,我想写“如果scroll_top大于div 1 + div 2 + 3的高度”

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

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

4 回答 4

14

为什么不简单地这样做呢?

var h = 0;
$('#div1, #div2, #div3').each(function(){ h+=$(this).height() });
于 2013-02-08T22:08:26.773 回答
4

这应该可以解决问题。

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);
}
于 2013-02-08T22:16:54.727 回答
2

试试这个:

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

这是一个固定的导航示例来源。

于 2013-02-08T22:09:14.290 回答
1

你可以实现这个基于 JQuery 的函数:

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

然后这样称呼它:

$('div, .className, #idName').sumHeights();
于 2017-11-23T15:35:16.207 回答