未捕获的TypeError:无法读取未定义的属性'each'

时间:2017-06-06 17:26:10

标签: jquery html scroll fade

我得到:Uncaught TypeError:无法读取未定义的属性'each' 在animateIfInview 在atonscroll

并且代码是:

 <script>
 function animateIfInView() {
 $.each($("content-img"), function(key, value) {
 if (isElementInViewport($(value))) {
 $(value).addClass("content-img-in-view");
 } else {
  // (Optional) Fade out when out of view
  $(value).removeClass("content-img-in-view");
  }
  });
  }

  // http://stackoverflow.com/a/7557433/5628
   function isElementInViewport(el) {
    //special bonus for those using jQuery
  if (typeof jQuery === "function" && el instanceof jQuery) {
  el = el[0];
  }

  var rect = el.getBoundingClientRect();

  return (
  rect.top >= 0 &&
  rect.left >= 0 &&
  rect.bottom <=
  (window.innerHeight ||
  document.documentElement.clientHeight) /*or $(window).height() */ &&
  rect.right <=
  (window.innerWidth ||
  document.documentElement.clientWidth) /*or $(window).width() */
  );
  }
  </script>

如何修复此错误?我在代码中缺少什么?提前谢谢你们

2 个答案:

答案 0 :(得分:0)

我建议如下:

function animateIfInView() {
  $(".content-img").each(function(key, elem) {
    if (isElementInViewport($(elem))) {
      $(elem).toggleClass("content-img-in-view");
    }
  });
}

类选择器使用$(".className"),其中代码中缺少.。此外,如果使用元素,建议使用.each()$.each(),这是建议用于数组和对象。

答案 1 :(得分:0)

jQuery.each(array/object,callback_function);

要求第一个参数作为数组或对象。阅读文档 here。我建议使用var obj = $(document).find(".content-img");然后使用 如

$.each(obj,function(key,value){
//your code goes here
});