不知道如何正确地命名这个问题,所以就这样吧。
我们有html:
<p id="p1"></p>
...
<p id="p14"></p>
和jquery:
$(window).scroll(function () {
var scroll = $(window).scrollTop();
for (var i = 70; i <= 980; i = i + 70) {
if (scroll > i && scroll < i + 70) {
var c = ???
$("#p" + c).toggleClass("active");
}
}
});
需要什么:
当$(window).scrollTop()
达到70到140级的值时,.active会添加到#p1
当值从140到210时 - 类添加到#p2并从#p1等中删除
我知道我可以用很多if (scroll > 70 && scroll < 140)
个结构来做到这一点,但我想自动完成。想象一下<p>
标签是50或更多。
我认为我需要使用额外变量c
,它将动态地从1更改为14,但不知道如何实现它。
答案 0 :(得分:3)
为什么不呢:
c = Math.floor(scroll / 70)
然后c将是1-14的值。完整的代码是:
$(window).scroll(function () {
var scroll = $(window).scrollTop();
for (var i = 70; i <= 980; i = i + 70) {
if (scroll > i && scroll < i + 70) {
var c = Math.floor(scroll / 70);
$("#p" + c).toggleClass("active");
}
}
});
现在,说到这一点,你真的不需要循环。你可能只有:
$(window).scroll(function () {
var scroll = $(window).scrollTop();
var c = Math.floor(scroll / 70);
$("#p" + c).toggleClass("active");
});