Javascript jQuery-从生成的元素动态获取id
我试图做的是在单击时获取列表中新添加项的id名称。这是我的密码Javascript jQuery-从生成的元素动态获取id,javascript,jquery,Javascript,Jquery,我试图做的是在单击时获取列表中新添加项的id名称。这是我的密码 $(文档).ready(函数(){ $('ul>li')。在('click',function()上{ var idName=$(this.attr('id'); 警报(idName); }); $('#添加')。单击(函数(){ var n=数学地板((数学随机()*100)+1); $('ul').prepend('li id=“name-'+n+'”>新项目); }); }); 旧项目 旧项目 旧项目 添加项目您需要使
$(文档).ready(函数(){
$('ul>li')。在('click',function()上{
var idName=$(this.attr('id');
警报(idName);
});
$('#添加')。单击(函数(){
var n=数学地板((数学随机()*100)+1);
$('ul').prepend('li id=“name-'+n+'”>新项目);
});
});代码>
- 旧项目
- 旧项目
- 旧项目
添加项目
您需要使用$(文档)。在('click','ul>li',function(){})上
而不是$('ul>li')。在('click',function(){})上这是因为您在加载jquery代码后动态添加元素。因此,$('ul>li')。on('click',function(){})代码>不会在新添加的元素上检测到单击事件。为了克服这个问题,您需要在document
级别将click事件分配给ul>li
,这样每当添加新元素时,它都位于document
的上下文中,并侦听ul>li
上的click
事件
$(文档).ready(函数(){
$(文档)。在('click','ul>li',function(){
var idName=$(this.attr('id');
警报(idName);
});
$('#添加')。单击(函数(){
var n=数学地板((数学随机()*100)+1);
$('ul').prepend('li id=“name-'+n+'”>新项目);
});
});代码>
新项目
- 旧项目
- 旧项目
- 旧项目
添加项
要获取新创建项的id,请使用ele:first CSS属性。
在单击时调用它
let new_el_id = $("ul").find("li:first").attr("id");
每次添加新项目时更新您的侦听器,请重试
$(文档).ready(函数(){
addListener();
函数addListener(){
$('ul li')。在('click',function()上{
var idName=$(this.attr('id');
警报(idName);
});
}
$('#添加')。单击(函数(){
var n=数学地板((数学随机()*100)+1);
$('ul').prepend('li id=“name-'+n+'”>新项目);
addListener();
});
});代码>
//
新项目
- 旧项目
- 旧项目
- 旧项目
添加项目
试试这个
$('ul').on('click','li', function() {
var idName = $(this).attr('id');
alert(idName);
});
将其绑定到文档
可能不是最有效的选择。为什么不把它放在ul
上呢?@BoyWithSilverWings它也不会以这种方式工作,因为元素是在DOM呈现后动态添加的。这完全不是实现这一点的合适方式。这会增加额外的开销。没错,谢谢!:)@安基塔加瓦尔