Javascript 如何将单击事件添加到动态id
我有一个Javascript 如何将单击事件添加到动态id,javascript,jquery,Javascript,Jquery,我有一个ul列表,该列表将随着数量的增加而动态创建。我有一个for循环,将click偶数绑定到所有那些UL 我需要做的是,当用户单击它时,删除以前选择的列表,并添加单击为选中的列表 不知何故,for循环中的k值对于递增列表的选择是不正确的,但是对于click函数是正确的 我想知道为什么(k)不正确?因为它已为所有5ul的点击事件正确绑定,但不在点击事件内 当i console.log记录k值时,它会为所有ul打印6。我想知道原因。如何解决这个问题 代码 jQuery(document).read
ul
列表,该列表将随着数量的增加而动态创建。我有一个for
循环,将click偶数绑定到所有那些UL
我需要做的是,当用户单击它时,删除以前选择的列表,并添加单击为选中的列表
不知何故,for循环中的k
值对于递增列表的选择是不正确的,但是对于click函数是正确的
我想知道为什么(k
)不正确?因为它已为所有5ul
的点击事件正确绑定,但不在点击事件内
当i console.log记录k
值时,它会为所有ul打印6
。我想知道原因。如何解决这个问题
代码
jQuery(document).ready(function(){
for(var k=1;k<=5;k++){
jQuery("#sample"+k+" li").click(function(){
console.log(k);
jQuery("#sample"+k+" li.selected").removeAttr('class');//removing previous selection
jQuery(this).addClass('selected');//adding selection for clicked one
});
}
});
jQuery(文档).ready(函数(){
对于(var k=1;k您可以使用jQuery事件委派来侦听父级上的事件并将其传递给子级。这是捕获动态添加元素的首选方法
请参阅:您试图在for循环中绑定k
的值,但问题是当您单击li
时,for
循环已完成
您可以用一个函数绑定k
的每个值
做一些像贝娄一样的事情
function addClick(k){
jQuery("#sample"+k+" li").click(function(){
console.log(k);
jQuery("#sample"+k+" li.selected").removeAttr('class');//removing previous selection
jQuery(this).addClass('selected');//adding selection for clicked one
});
}
jQuery(document).ready(function(){
for(var k=1;k<=5;k++){
addClick(k)
}
});
函数addClick(k){
jQuery(“#sample”+k+“li”)。单击(函数(){
控制台日志(k);
jQuery(“#sample”+k+“li.selected”).removeAttr('class');//删除以前的选择
jQuery(this).addClass('selected');//为单击的类添加选择
});
}
jQuery(文档).ready(函数(){
对于(var k=1;k抱歉,我不知道这个问题已经有了答案。我应该现在删除这个问题吗?对不起,我不能理解这个委托给我。请你解释一下,谢谢你的帮助。谢谢你的回答