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

jQuery绑定两次顺序点击事件后盒子无法重复放大缩小如何解决

问题原因分析
  • 嵌套绑定点击事件:你在.item的全局点击回调内,额外给当前点击的元素重复绑定了新的点击事件,每点击一次就会多绑定一个回调函数,后续点击时多个回调会先后执行,导致grow类添加后立刻被移除的逻辑冲突
  • 缺少状态判断:没有根据当前元素是否已有grow类区分「放大」和「缩小」两种交互场景,逻辑完全耦合
修复方案

不需要嵌套绑定事件,只需要给所有.item绑定一次全局点击事件,每次点击时判断当前元素的状态执行对应逻辑即可,修复后代码如下:

$(".item").on("click", function() {
  // 判断当前点击的盒子是否已经是放大状态
  const isGrown = $(this).hasClass("grow");
  if (isGrown) {
    // 已经放大,点击就缩小复原
    $(this).removeClass("grow");
    $(".item").not(this).removeClass("collapse");
  } else {
    // 未放大,点击就放大当前盒子,收起其他盒子
    $(this).addClass("grow");
    $(".item").not(this).addClass("collapse");
  }
})
优化说明
  • 去掉了冗余的each遍历,jQuery的类操作方法本身支持批量选中多个元素执行,不需要循环逐个处理
  • 只绑定一次事件,不会出现重复绑定的逻辑冲突,支持无限次重复触发交互
  • 状态判断逻辑清晰,后续维护成本更低

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 03:45:02