页面滚动至90%时Alert提示重复执行问题求助
解决滚动到页面90%位置时Alert多次触发的问题
我来帮你搞定这个问题~你遇到的核心问题是状态变量excuted被定义在了滚动事件的回调函数内部,每次触发scroll事件时,这个变量都会被重新初始化为false,所以判断条件永远成立,alert会反复弹出。
修正后的代码
var percent = 90; var window_scrolled; // 把状态变量放到事件外部,确保只初始化一次 var excuted = false; $(window).scroll(function() { window_scrolled = ($(document).height()/100)*90; if($(window).scrollTop() + $(window).height() >= window_scrolled) { if (!excuted) { alert("scrolled to bottom"); excuted = true; // 可选优化:触发后解绑滚动事件,减少性能消耗 // $(window).off('scroll'); } } });
关键修改说明
- 将
excuted变量移到scroll事件回调函数外部,这样它的状态会在页面生命周期内持续保留,不会每次滚动都被重置为false。 - 当第一次满足滚动到90%的条件时,
excuted会被设为true,后续再滚动到该位置时,判断条件!excuted就不再成立,alert不会重复弹出。 - 如果你的需求是触发一次后就不再需要监听滚动事件,可以取消注释代码里的
$(window).off('scroll'),这样能避免后续不必要的滚动事件监听,优化页面性能。
内容的提问来源于stack exchange,提问作者Van
相关产品推荐
相关产品推荐

