编辑

var setInitPos = true;

function loop() {

  $(".image").each(function() {
    // some other code

    if (imageIsVisible) {
      // some other code

      // Set variable initPos only once for each item
      if (setInitPos) {
        initPos = $(window).scrollTop();
        setInitPos = false;
      }
    }

    // some other code
  })

}

$(window).scroll(function(){ loop() }


如果某个项目在视口中可见,请为每个变量的值填充一次initPos。

但是现在第二项以setInitPos = false开头!这是为什么?

最佳答案

编辑

在每个DOM元素上持久化initPos的最佳方法是将其附加到每个DOM元素,您可以使用jQuery.data()

  $(".image").each(function() {
    var initPos = $(this).data('initpos') || 0;

    // some other code

    if (imageIsVisible) {
      // some other code

      // Set variable initPos only once for each item
      if (!initPos) {
        $(this).data('initpos',$(window).scrollTop());
      }
    }

关于javascript - JS/jQuery –在循环内检查一次初始位置(滚动事件),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37275685/

10-10 23:07