javascript - 如何将点击事件添加到动态id

标签 javascript jquery

我有一个ul列表将随着数量的增加而动态创建。我有一个for循环将点击绑定(bind)到所有这些 UL

我需要做的是,当用户单击它时,删除以前选择的列表并将单击的列表添加为选定的。

不知何故k for循环中的值对于递增列表的选择是不正确的,但对于点击功能是正确的。

我想知道为什么它( k )不正确?因为它已正确绑定(bind)所有 5 ul 的点击事件但不在点击事件内。

当我console.log k时它打印的值 6对于所有 ul。我想知道原因。怎么解决这个问题呢?

代码

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
        });
    }
});

JSFIDDLE

最佳答案

您可以使用 jQuery 事件委托(delegate)来监听父级上的事件并将其传递给子级。这是捕获动态添加元素的首选方法。

参见:jQuery event delegation with .on (this reference)

关于javascript - 如何将点击事件添加到动态id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25512170/

相关文章:

javascript - 仅返回一个 <h3> 父标签的文本

javascript - 我在哪里可以找到 JQuery 方法的实际代码?

javascript - 将钩子(Hook)传递给子 typescript 的问题

javascript - 将鼠标悬停在 div 的嵌套项上

javascript - Android-使用 addJavaScriptInterface 从 Javascript 返回一个值

jquery - 通过比较输入名称来更改输入 css

javascript - 通过 Jquery 将文本附加到 td 单元格

javascript - 如何检测以 javascript 结束的窗口滚动?

javascript - 使用 jquery 创建 Web 小部件并向其传递参数

javascript - 为什么在javascript对象的参数元素中反斜杠?