有人提出了类似的问题,但我在这些主题中找不到任何帮助。
看看this fiddle 。右侧有一个菜单,可让您滚动到其他部分。
应该发生的情况是,例如,当您单击“3”时,菜单中的“3”会使类“可见”(以较大的字体大小显示)。然而,由于某种原因,第一个列表项总是获得此类。我认为发生这种情况是因为在下面的 if 语句中,第一个 div 因偏移量为零而被评估为 true,这是不正确的。
$("body > div").each(function () {
var $this = $(this),
nextSection = $this.next("div"),
offsetT = $this.offset().top;
if (offsetT == 0) {
$("nav a").removeClass("visible");
$("a#" + $this.attr("id") + "-button").addClass("visible");
console.log("a#" + $this.attr("id") + "-button");
}
});
另一种解释可能是由于函数被作为回调调用而出现问题。我这样做是故意的,因为当它被作为回调调用时,应该没有动画留下,并且容器应该被捕捉到窗口的顶部:所以只能有一个元素具有 offset == 0
。但正如您所看到的,这不起作用。
该类必须在 SnapIt 函数内部设置,因为该函数也在其他地方使用。
最佳答案
我认为您希望在滚动时选择正确的数字,然后您需要更改:
if (offsetT == 0)
到 if (offsetT == posToScroll)
理性
if (offsetT == 0)
将始终选择菜单项 1,因为该菜单项的偏移量为 0。将 if 语句更改为 if (offsetT == posToScroll)
code> 表示选择窗口已滚动到的那个。
关于jquery - jQuery 中的 if 语句总是返回 true,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24806263/