我正在努力让我的代码的最后一部分工作。问题是我需要在用户滚过div
所以我的html结构看起来大致像这样
<div class="panel-grid-cell">
<div id="pgc-1">...</div>
<div id="pgc-2">...</div>
...
<div id="pgc-n">...</div>
</div>
因此,我们的想法是当用户通过div
id="pgc-1"
为其余人传递函数等等。
这些div中的每一个都有一个附加li a
的{{1}}项,所以我的函数看起来像这样
href
其中ga('send','event','scroll',city,$(this).text())
与this
li a
在我拥有的那一刻是这样的。
循环遍历href
并将其div
存储在数组中的函数。并构建一个id's
菜单。
li a
现在我还有一个函数可以检查我滚动了多远并更改了每个 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);
}
项的类。
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);
,但我只需要触发一次我的功能。
任何帮助?
答案 0 :(得分:0)
前几天找到了解决方案,
在滚动功能中,只需在$(document).scrollTop()
等于refElement.offset()
时设置一个条件,触发一个函数,它就能完美运行。
这意味着检查用户滚动的距离以及此值是否等于div的偏移量,触发一个函数。