Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/446.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 传递节时激发函数-jquery_Javascript_Jquery - Fatal编程技术网

Javascript 传递节时激发函数-jquery

Javascript 传递节时激发函数-jquery,javascript,jquery,Javascript,Jquery,我正在努力让我的代码的最后一点工作。问题是当用户滚动经过div 我的html的结构大致如下 <div class="panel-grid-cell"> <div id="pgc-1">...</div> <div id="pgc-2">...</div> ... <div id="pgc-n">...</div> </div> 其中,此将与href 此刻我所拥有的就是这个。 一个循环

我正在努力让我的代码的最后一点工作。问题是当用户滚动经过
div

我的html的结构大致如下

<div class="panel-grid-cell">
  <div id="pgc-1">...</div>
  <div id="pgc-2">...</div>
  ...
  <div id="pgc-n">...</div>
</div>
其中,
将与
href

此刻我所拥有的就是这个。 一个循环通过
div
并将其
id
存储在数组中的函数。和一个builda
li
菜单

 var li="";
 var linames = ["Intro","1925","1935","1945","1955","1965","1975","1985","1995","2005","Now"];
 var i = 0;
 function getSectionIDs()
 {
    $("div.panel-grid-cell").children().each(function() {
    if(linames[i] !== undefined)
    {
        li += "<li><a href='#"+$(this).attr('id')+"'>"+linames[i]+"</a></li>";           
    }
    i++;
    });
 $("ul.timeline-items").append(li);
 }
这段代码不是我想要的,因为它经常检查我是否通过了div,但我只需要启动一次函数


有什么帮助吗?

前几天我自己找到了解决办法

在滚动函数中,只要在
$(document).scrollTop()
等于
refElement.offset()
时设置一个条件,即可启动一个函数,该函数工作正常


这意味着检查用户滚动的距离,如果该值等于div的偏移量,则启动一个函数

如果您只想触发一次方法,请使用jQuery的
one
方法。。。参考hmm,关于
one
的好观点,需要找到一种智能的方法来连接它。
 var li="";
 var linames = ["Intro","1925","1935","1945","1955","1965","1975","1985","1995","2005","Now"];
 var i = 0;
 function getSectionIDs()
 {
    $("div.panel-grid-cell").children().each(function() {
    if(linames[i] !== undefined)
    {
        li += "<li><a href='#"+$(this).attr('id')+"'>"+linames[i]+"</a></li>";           
    }
    i++;
    });
 $("ul.timeline-items").append(li);
 }
function onScroll(event){
  var scrollPos = $(document).scrollTop();
  $('ul.timeline-items li a').each(function () {
      var currLink = $(this);
      var refElement = $(currLink.attr("href"));
      if (refElement.position().top -75 <= scrollPos && refElement.position().top+75 + refElement.height()-75 > scrollPos) {
         $('ul.timeline-items li a').removeClass("active");
         currLink.addClass("active");
      }
      else{
         currLink.removeClass("active");
      }
    });
    }
    $(document).on("scroll", onScroll);