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

jQuery点击单个按钮触发3次回调事件是什么原因,如何解决?

问题原因

  • 最常见的情况是你的绑定代码被重复执行了3次:比如你把这段click绑定逻辑写在了.listing的遍历循环里、或者放在了会被多次调用的渲染函数、ajax请求回调中,每执行一次绑定逻辑,3个按钮就会各新增一次点击事件绑定,最终每个按钮都被绑定了3次回调,点击时就会连续触发3次。你看到的“3个按钮的事件同时触发”大概率是三次回调打印的混淆,实际不会触发其他未点击按钮的绑定逻辑。
  • 额外的HTML语法问题:你的wrapper元素的class属性漏写了等于号,<div class"wrapper"> 需修正为 <div class="wrapper">,虽不会直接导致事件多次触发,但可能引发其他样式或选择器匹配异常。

修复方案

方案1:绑定前先清除已有事件

绑定点击事件前调用off('click')清空同类型已绑定事件,从根源避免重复绑定:

$('.listing .btn.apply').off('click').click(function(){
    let getTestName = $(this).parent().find('h1').text();
    console.log('getTestName: ', getTestName);
});

方案2:使用事件委托绑定

把事件绑定到页面初始化就存在的父级元素上,仅匹配目标按钮触发,既不会出现重复绑定问题,也能兼容后续动态新增的按钮:

// 这里用修正后的wrapper作为绑定父级即可,也可根据实际场景替换为document
$('.wrapper').on('click', '.btn.apply', function(){
    let getTestName = $(this).parent().find('h1').text();
    console.log('getTestName: ', getTestName);
});

方案3:调整绑定代码执行时机

直接排查绑定逻辑的位置,确保它只在页面初始化阶段执行一次,不要放在循环、重复调用的函数内部。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 10:24:02