jquery 滚动事件多次运行代码
jquery scrolled event runs code multiple times
因此,使用以下代码,console.log
输出在滚动页面时多次滚动到开发工具控制台。
$(document).on("scroll", function() {
if ($(this).scrollTop() > 25) {
console.log("scrolled");
//do something
}
else {
//do something
}
});
所以如果我有一堆 javascript 来控制将导航栏设置为粘性,它会有效地运行很多次。这似乎是一个糟糕的方法。
我尝试使用以下代码来阻止滚动事件:
$(document).on("scroll", function(e) {
if ($(this).scrollTop() > 25) {
console.log("scrolled");
//do something
e.preventDefault();
}
else {
//do something
}
});
但它仍然多次滚动到开发工具。
我也尝试按照@jswebb 的建议使用 break 语句,但它给了我这个 js 错误 Uncaught SyntaxError: Illegal break statement
这是显示输出的屏幕截图。
如何防止此代码多次运行,但如果$(this).scrollTop() !> 25
,则重新运行,所以在else语句中。
干杯
编辑
抱歉,我是个傻瓜 - 我看到你的日志在重复,在我的脑海里,我立刻想到,"LOOP!" 除了这里没有循环;只是每次滚动超出参数时,您的控制台都会记录输出。
我认为这不一定是坏事;这并不是说您每次滚动时都会触发代码,您只是告诉控制台在滚动超过 25 次时立即记录。
至于你的 real-world 置顶 header,我想知道这是否是个问题?
$(window).on("scroll", function(e) {
if ($(this).scrollTop() > 25) {
$("header").addClass("fixed");
}
else {
$("header").removeClass("fixed");
}
});
您只需将其设置为添加一个 class,使您的 header 固定超过 25 - 您使用 IRL 的代码只会在您设置的阈值时触发一次。
您是否尝试过在达到限制后使用 break
语句退出条件?
$(window).on("scroll", function(e) {
if ($(this).scrollTop() > 25) {
console.log("scrolled");
//do something
break;
}
else {
//do something
}
});
因此,使用以下代码,console.log
输出在滚动页面时多次滚动到开发工具控制台。
$(document).on("scroll", function() {
if ($(this).scrollTop() > 25) {
console.log("scrolled");
//do something
}
else {
//do something
}
});
所以如果我有一堆 javascript 来控制将导航栏设置为粘性,它会有效地运行很多次。这似乎是一个糟糕的方法。
我尝试使用以下代码来阻止滚动事件:
$(document).on("scroll", function(e) {
if ($(this).scrollTop() > 25) {
console.log("scrolled");
//do something
e.preventDefault();
}
else {
//do something
}
});
但它仍然多次滚动到开发工具。
我也尝试按照@jswebb 的建议使用 break 语句,但它给了我这个 js 错误 Uncaught SyntaxError: Illegal break statement
这是显示输出的屏幕截图。
如何防止此代码多次运行,但如果$(this).scrollTop() !> 25
,则重新运行,所以在else语句中。
干杯
编辑
抱歉,我是个傻瓜 - 我看到你的日志在重复,在我的脑海里,我立刻想到,"LOOP!" 除了这里没有循环;只是每次滚动超出参数时,您的控制台都会记录输出。
我认为这不一定是坏事;这并不是说您每次滚动时都会触发代码,您只是告诉控制台在滚动超过 25 次时立即记录。
至于你的 real-world 置顶 header,我想知道这是否是个问题?
$(window).on("scroll", function(e) {
if ($(this).scrollTop() > 25) {
$("header").addClass("fixed");
}
else {
$("header").removeClass("fixed");
}
});
您只需将其设置为添加一个 class,使您的 header 固定超过 25 - 您使用 IRL 的代码只会在您设置的阈值时触发一次。
您是否尝试过在达到限制后使用 break
语句退出条件?
$(window).on("scroll", function(e) {
if ($(this).scrollTop() > 25) {
console.log("scrolled");
//do something
break;
}
else {
//do something
}
});