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

如何通过DOM获取jQuery动态新增HTML元素的Data属性

如何获取jQuery动态添加元素的data属性?

嘿,这问题我太熟了——你碰到的是动态元素事件绑定的经典坑!

你一开始用.click()给.see-id绑定的点击事件,只会作用在页面加载完成时就已经存在的DOM元素上。后来通过.after()新增的那些.see-id元素,根本没被绑定这个事件,所以点击它们自然没法触发获取data属性的逻辑。

解决办法很简单,用事件委托就行——把事件绑定到一个始终存在的父级元素上,让它帮我们监听子元素的事件。这样不管子元素是一开始就有的,还是后来动态加的,事件都能正常触发。

给你改好的完整代码:

<div class="row" id="append"> 
  <div class="col-12" id="newElement"> 
    <button>添加新元素</button> 
  </div> 
  <div class="col-md-3 see-id"> 
    <button data-id="0.901065887770927">查看ID</button> 
  </div> 
</div> 
<script> 
$(document).ready(function(){
  // 把事件委托给父容器#append,监听所有.see-id下的button点击
  $('#append').on('click', '.see-id button', function(){
    // 这里的this就是被点击的按钮,直接取它的data-id
    alert($(this).data('id'));
  })
  
  $('#newElement').click(function(){
    var rand = Math.random();
    $('#newElement').after('<div class="col-md-3 see-id"><button data-id="'+rand+'">查看ID</button></div>');
  })
})
</script>

顺便帮你修正了一个小问题:之前的代码里,$(this)指向的是.see-id这个div,但data-id其实是在按钮上,所以原来的静态元素点击也拿不到正确的ID。现在改成直接监听按钮的点击,this就指向按钮本身,能直接获取data-id了。

如果偏要绑定到.see-id这个div上,也可以这么写:

$('#append').on('click', '.see-id', function(){
  alert($(this).find('button').data('id'));
})

效果是一样的,点击div的时候找到里面的按钮再取属性就行。

内容的提问来源于stack exchange,提问作者Tsuké Aér

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 21:23:12