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

jQuery如何获取被点击的子div元素并将其传入点击事件处理函数

问题解答

现有代码问题说明

你当前的事件绑定写法存在错误:

$("#area_myCards > .cardContainer").on('click',cardClick())

这里cardClick后面加了括号,会直接执行该函数,而不是将其作为点击事件的回调传入,需要先去掉括号改为cardClick。


疑问解答

1. 如何确定被点击的子元素

点击事件的回调函数会默认接收事件对象作为入参,回调内的event.currentTarget就对应触发本次点击的.cardContainerDOM元素,用jQuery包装后即可直接操作该元素。

2. data-id的获取方式

不需要在绑定监听器时单独传值,直接在回调函数内部获取即可,代码更简洁易维护。


推荐实现方案

因为你的卡片是动态生成的,更推荐使用事件委托的方式绑定事件,将监听器绑定在父元素#area_myCards上,后续新增卡片也不需要重新绑定事件,性能和可维护性更好:

// 遍历生成卡片的逻辑保持不变
$.each(cardArray, function(i,value){
  if(i<9){
    var tCard = $('<div class="cardContainer" title="'+cardArray[i]['name']+'" data-id="'+i+'">'+cardArray[i]['damage']+'</div>')
    $("#area_myCards").append(tCard)
  }
});

// 事件委托绑定点击事件
$('#area_myCards').on('click', '.cardContainer', cardClick)

// 点击处理函数
function cardClick(e) {
  // 获取被点击的卡片jQuery对象
  const $currentCard = $(e.currentTarget)
  // 获取data-id属性
  const cardDataId = $currentCard.data('id')
  // 此处写后续业务逻辑
  console.log('点击的卡片data-id为:', cardDataId)
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 20:36:05