Javascript 附加元素的jQuery.click()

Javascript 附加元素的jQuery.click(),javascript,Javascript,我有一个系统可以为forEach()创建一个新按钮。以下是代码: r.forEach(room => { socket.on('chat message', (m, i) => { let li = $(`<li><button id="${m[i]}">${m[i]}</button></li>`) $('#events').

我有一个系统可以为forEach()创建一个新按钮。以下是代码:

 r.forEach(room => {
            socket.on('chat message', (m, i) => {
                let li = $(`<li><button id="${m[i]}">${m[i]}</button></li>`)
                $('#events').append(li)
            })
        });
r.forEach(房间=>{
socket.on('聊天信息',(m,i)=>{
设li=$(`li>${m[i]}`)
$(“#事件”).append(li)
})
});

如何为每个按钮创建.click()侦听器?

在创建元素时,还要设置
click
事件处理程序:

r.forEach(房间=>{
socket.on('聊天信息',(m,i)=>{
设li=$(`li>${m[i]}`);
在“点击”时,函数(事件){
//你的代码在这里
}
$(“#事件”)。追加(li);
});
});
可能是这样的:

$('#events').on('click', 'button', function(){
    // Your code here.
})

您应该在按钮上添加一个类,以确保将它们作为目标。

$(“#事件”)。在('click','li button',…)
This…..代码似乎也有问题。您正在循环某个内容以引用多个房间。然后,您开始侦听每个房间的套接字消息,并且每当您收到一条消息(可能会触发每个房间),您都将创建一个li并将其附加到页面。如果有40个房间,您似乎会d创建40个重复的lis。这就是我想做的,点击这将在下面的所有按钮上创建事件#events@Itamar它在父级上创建一个事件侦听器,该侦听器对来自所有子级按钮的事件作出反应。如果
#events
中没有不需要执行此操作的按钮,则会创建较少的事件侦听器和达到相同的结果。是的,但用户要求为每个按钮创建一个事件,而不是所有按钮。这就是为什么他应该在他想要标记此事件的按钮上添加一个类。有时用户不知道还有更好的事情。@Itamar