You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

点击关闭叉号后,如何停止滚动触发的元素显示函数运行?

解决点击关闭后滚动不再触发元素显示的问题

嘿,我来帮你搞定这个需求!你现在的代码里,滚动事件是一直绑定在window上的——哪怕你点击叉号隐藏了.try-pula,只要滚动高度超过700px,这个事件就会再次触发显示逻辑。要解决这个问题,有两种简单且常用的方案,我给你详细说说:

方案一:用状态标记控制(推荐,灵活度高)

我们可以加一个变量来记录这个元素是否已经被用户关闭,之后在滚动事件里先判断这个状态,只有当元素没被关闭时,才执行显示操作:

// 初始化状态:元素未被关闭
let isBarClosed = false;

// 页面加载时先隐藏元素
jQuery(".try-pula").hide("fast");

// 绑定滚动事件
$(window).scroll(function() {
  // 如果已经被关闭,直接跳出函数,不执行后续逻辑
  if (isBarClosed) return;

  const scrollHeight = $(window).scrollTop();
  if (scrollHeight > 700) {
    jQuery(".try-pula").fadeIn(); // 这里用fadeIn()比show("fade")更标准哦
  }
});

// 点击关闭叉号时更新状态并隐藏元素
jQuery("#cross").click(function() {
  jQuery(".try-pula").hide();
  // 标记为已关闭,后续滚动就不会再触发显示了
  isBarClosed = true;
});

这个方案的优势:

状态标记的方式不会移除滚动事件,如果你之后需要重新让这个元素在滚动时显示(比如加个“重新显示”按钮),只需要把isBarClosed设回false就行,非常灵活。

方案二:直接解绑滚动事件(一次性关闭)

如果确定用户关闭后永远不需要再看到这个元素,我们可以直接把绑定在window上的滚动事件解绑掉,这样后续滚动就完全不会触发相关逻辑了:

// 页面加载时先隐藏元素
jQuery(".try-pula").hide("fast");

// 把滚动事件处理函数单独命名,方便后续解绑
function showPulaOnScroll() {
  const scrollHeight = $(window).scrollTop();
  if (scrollHeight > 700) {
    jQuery(".try-pula").fadeIn();
  }
}

// 绑定滚动事件
$(window).scroll(showPulaOnScroll);

// 点击关闭叉号时隐藏元素并解绑滚动事件
jQuery("#cross").click(function() {
  jQuery(".try-pula").hide();
  // 解绑指定的滚动事件处理函数
  $(window).off("scroll", showPulaOnScroll);
});

这个方案的特点:

一旦解绑,滚动事件就彻底失效了,适合确定不需要再次触发的场景,性能上也会略好一点(少了一个事件监听)。

另外提个小细节:你原代码里的show("fade")其实不是jQuery的标准写法,用fadeIn()可以更稳定地实现淡入动画效果哦~

内容的提问来源于stack exchange,提问作者Afplaktape

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 06:42:45