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

如何批量为多个Div元素绑定jQuery doubletap事件避免重复编码?

我懂你这种重复写绑定代码的痛苦——每个带唯一ID的div都要单独写一段doubletap事件绑定,不仅代码冗余,后续维护也麻烦。刚好你找到的遍历思路完全可行,下面给你整理成清晰的实现方案,还有进阶优化写法:

问题场景回顾

我使用jQuery插件捕获doubletap事件,但目前为每个带唯一id的div元素单独编写了事件绑定代码,存在大量重复。希望通过$(this)或其他方式实现批量选择这些div元素,无需重复编写每个选择器的事件绑定逻辑,仅用简洁的代码即可为所有div绑定doubletap事件并获取触发事件的元素信息。

基础批量绑定方案

这种写法适合处理静态存在的div元素,通过遍历父容器的子元素来批量绑定事件:

// 遍历#infotextinner下的所有子元素,给每个元素绑定doubletap事件
$("#infotextinner").children().each(function() {
    $(this).on("doubletap", function() {
        // 用$(this)直接获取当前触发事件的元素,拿到它的ID
        const targetId = $(this).attr("id");
        // 这里替换成你实际需要的业务逻辑,比如提示信息
        alert(`触发双击事件的元素ID:${targetId}`);
    });
});

这段代码的好处:

  • 不用再逐个写$("#xxx").on(...),一次遍历搞定所有子元素的绑定;
  • 事件回调里的$(this)精准指向触发事件的那个div,轻松获取它的ID、类名等属性;
  • 代码结构清晰,后续修改业务逻辑只需要改回调里的内容即可。

进阶优化:事件委托写法

如果你的页面会动态添加div元素到#infotextinner容器里,推荐用事件委托的方式,性能更优且无需重复绑定:

// 把事件绑定到父容器上,通过事件冒泡触发子元素的事件回调
$("#infotextinner").on("doubletap", "div", function() {
    const targetId = $(this).attr("id");
    alert(`触发双击事件的元素ID:${targetId}`);
});

为什么推荐这种写法?

  • 只需要绑定一次事件到父容器,相比遍历绑定减少了事件监听的数量,性能更好;
  • 后续动态新增的div元素,只要在#infotextinner下,自动就能触发doubletap事件,不用再重新执行绑定逻辑;
  • 代码更简洁,一行事件绑定就搞定所有需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:16:48