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

jQuery动态获取新增列表元素ID的功能实现问题

解决动态添加列表项的点击事件问题

嘿,我懂你的需求啦——点击新添加的列表项时要获取它的ID,但现在新添加的项点击后没反应对吧?这是因为你原来的事件绑定方式只对页面加载时已存在的<li>生效,动态生成的元素没被绑定事件。

问题原因

你原来的代码里,$('ul>li').on('click', ...)是在页面初始化时,给当时已经存在的<li>元素绑定点击事件。但后来通过prepend添加的新<li>,并没有被绑定这个事件,所以点击它们不会触发alert。

解决方案:使用事件委托

我们可以把事件绑定到父元素(这里是<ul>)上,让父元素监听子元素的点击事件。jQuery的.on()方法支持这种事件委托写法,这样不管是初始的还是动态添加的<li>,点击都会触发事件。

修改后的完整代码如下:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul>
  <li id="name-1">初始项1</li>
  <li id="name-2">初始项2</li>
</ul>
<button id="add">添加新项</button>

<script>
$(document).ready(function() {
  // 用事件委托绑定点击事件,监听ul下所有li的点击(包括动态添加的)
  $('ul').on('click', 'li', function() {
    var idName = $(this).attr('id');
    alert(idName);
  });

  $('#add').click(function() {
    var n = Math.floor((Math.random() * 100) + 1);
    $('ul').prepend('<li id="name-' + n + '">New Item</li>');
  });
});
</script>

关键说明

  • 事件委托的写法是$(父元素).on('事件名', '子元素选择器', 回调函数)
  • 这里把点击事件绑定到<ul>上,当点击它下面的<li>时,事件会冒泡到<ul>,然后触发我们的回调函数,这样动态添加的<li>也能被监听。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:24:23