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

jQuery on click事件仅生效一次问题:按钮重置功能如何稳定运行?

问题根源

你代码中toggleClick(false)调用的$('.button').off('click')会移除按钮上绑定的全部点击事件,包括你单独绑定的重置逻辑的点击事件,所以第一次执行完后,按钮上没有任何事件残留,后续点击自然无响应。

修正方案

给需要动态解绑的功能事件添加事件命名空间,解绑时只移除指定命名空间下的事件,不会影响其他绑定的事件,同时增加避免重复绑定的逻辑。

完整可运行代码

jQuery(document).ready(function($) {
  function toggleClick(on) {
    if (on) {
      // 先解绑避免重复绑定,仅移除命名空间为mainFunc的点击事件
      $('.button').off('click.mainFunc').on('click.mainFunc', function() {
        setTimeout(function() {
          $('.sidebaropen')[0].click()
        }, 210);
        $("html, body").animate({
          scrollTop: 0
        }, "fast");
        toggleClick(false);
        console.log('clicked');
      });

    } else {
      // 仅解绑主功能的点击事件,保留重置事件
      $('.button').off('click.mainFunc');
    }

  }
  toggleClick(true);

  // 这个重置事件一直保留,不会被上面的off清除
  $('.button').on('click', function() {
    console.log('Reset done');
    setTimeout(function() {
      toggleClick(true);
    }, 210);
  });
});

修改说明

  • 给主功能的点击事件添加了mainFunc命名空间,标识为click.mainFunc
  • 解绑时只针对该命名空间的事件操作,不会影响你单独绑定的重置事件
  • 绑定主功能事件前先做一次解绑,避免多次调用toggleClick(true)导致事件重复绑定,触发多次逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 13:09:02