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

如何选择动态生成类或HTML静态类?jQuery写法失效求解决方案

解决动态/静态父元素下的事件委托问题

嘿,我来帮你理清楚这个问题!你之前的两种写法其实都没达到“同时选中.wrapper和.surround作为事件委托容器”的目的,先说说问题出在哪:

  • 第一种写法$('.wrapper' || '.surround'):这里的逻辑或||是JavaScript的运算符,它会先判断.wrapper这个字符串是否为“真值”——显然非空字符串都是真值,所以这个表达式最终只会返回.wrapper,相当于只选了.wrapper这一个容器,完全忽略了.surround。
  • 第二种写法$('.wrapper', '.surround'):jQuery的这个语法是“在.surround的上下文里查找.wrapper元素”,而不是同时选中两个容器,所以如果.surround里没有.wrapper,这个选择器就找不到任何元素,自然绑定无效。

接下来给你两种可行的解决方案,根据你的实际场景选:

方案1:同时选中两个静态/动态父元素(父元素至少有一个存在于初始DOM)

如果.wrapper和.surround至少有一个是页面加载时就存在的(或者后续生成后能被选中),直接用逗号分隔多个选择器,把两个容器都选出来,再绑定事件委托:

$('.wrapper, .surround').on('click', '.bet-button', function() {
  // 你的点击逻辑
  console.log('Bet button clicked!');
});

逗号在jQuery选择器里就是“或”的意思,这样就能同时给两个容器绑定事件委托,不管.bet-button是静态还是动态生成的,只要它在这两个容器里,点击事件都会被触发。

方案2:绑定到上层静态元素(应对父元素也动态生成的情况)

如果.wrapper和.surround本身都是动态生成的(页面加载时不存在),那就要把事件委托绑定到页面加载时就存在的上层元素(比如最靠近它们的静态父容器,尽量别直接用document,会影响性能),同时把目标元素的完整选择器写出来:

$('body').on('click', '.wrapper .bet-button, .surround .bet-button', function() {
  // 你的点击逻辑
  console.log('Bet button clicked!');
});

这种写法的好处是,不管父元素什么时候生成,只要.bet-button符合.wrapper .bet-button或.surround .bet-button的选择器,点击事件就能被捕获到。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:39:44