Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将单击事件添加到动态id_Javascript_Jquery - Fatal编程技术网

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
)不正确?因为它已为所有5
ul
的点击事件正确绑定,但不在点击事件内

当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抱歉,我不知道这个问题已经有了答案。我应该现在删除这个问题吗?对不起,我不能理解这个委托给我。请你解释一下,谢谢你的帮助。谢谢你的回答