我有一个在$(' .message-input')上设置听众的功能
function addEasterEgg(room){
$('.message-input').on('focus', function(event) {
event.preventDefault();
console.log('room', room)
if (room.length === 1) {
displayStatus("No-one's there!!")
};
});
}
它在事件roomStatus上调用。
socket.on('roomStatus', function(room){
addEasterEgg(room);
});
每次有人加入房间时都会触发roomStatus事件。因此,如果房间首先有一个人,它会被触发并且房间= [" Zf17x3UsNUdgMJ3UAAAD"]然后当另一个人加入时,它再次被触发并且房间= [" Zf17x3UsNUdgMJ3UAAAD",&# 34; ksxzbQhe0GuZqhMyAAAE"]
所以关注焦点'事件,我得到两个console.logs(每个房间值一个)和room.length总是等于1,即使它已经变为2
我相信它是因为我的方法被调用两次意味着添加了2个侦听器。如果那是对的,那么当下次调用roomStatus并调用addEasterEgg时,我该如何管理删除前一个侦听器?
由于
答案 0 :(得分:5)
我找到了修复程序。它看起来确实是在向
添加多个事件监听器$('.message-input')
所以在添加修复它之前,只需删除任何剩余的事件侦听器
$('.message-input').off('focus')
添加到:
function addEasterEgg(room){
$('.message-input').on('focus', function(event) {
event.preventDefault();
console.log('room', room)
if (room.length === 1) {
displayStatus("No-one's there!!")
};
});
}