如何使用offset()。top与forEach循环

时间:2016-04-05 20:28:33

标签: javascript jquery arrays foreach

感谢您查看我的问题。我有一个位置固定的导航栏和一个ul。当nav的offset()。top大于每个li的offset()。top时,我想单独为每个li应用一个类。当用户向下滚动页面时,每个li应该1)显示,2)给出一个类,以便它在页面上的动画。

var nav = $('#nav').offset().top;

[].forEach.call(document.getElementsByClassName('portfolio_pieces'), (function(piece){
  console.log(piece);
  if (piece.offset().top < nav) {
    $(piece).show().addClass("rollIn");
  }
}));

我试图用forEach循环来完成这个任务;但是,控制台告诉我piece.offset不是一个函数。每件作品都代表着一个与班级&#39; portfolio_pieces&#39;。有没有其他方法可以实现这一目标,还是我错过了任何不允许偏移量来处理这些li元素的东西?

非常感谢您阅读,如果您有任何想法请分享!

1 个答案:

答案 0 :(得分:0)

如果要使用jQuery offset method,则应将其应用于jQuery元素。在你的情况下:

$(piece).offset().top

如果您想坚持使用纯Javascript,请检查offsetTop property

piece.offsetTop

说明:您使用了Javascript&#39; getElementByClassName方法,其中包含:

  

返回具有全部子元素的所有子元素的类数组对象   给定的类名

因此你不能将jQuery方法应用于其中任何一个。