我是JS的新手,我在使用事件方面遇到了一些困难。
我的问题是该事件不止一次重复。我使用socket.io来完成我的简单游戏。这是我的代码:
socket.on("permit", function(){
$('#attack').on('click', function(){
var id;
$('#game-field').on('click', '.cell', function() {
id = parseInt(this.getAttribute('id'));
$('#game-field').unbind('click');
socket.emit('attack', id); /*when event repeats - that line creates problems like a snowball*/
});
});
});
如何避免不必要的重复事件?
答案 0 :(得分:1)
使用 one 选择器一次绑定事件。它只能运行一次
$('#attack').one('click', function(){
// your code
});
$('#game-field').one('click', '.cell', function() {
// your code
});
OR
socket.on("permit", function(){
$('#attack').off('click', attecked);
$('#attack').on('click', attecked);
});
function attecked(){
var id;
$('#game-field').one('click', '.cell', function() { // dont unbind the event removed ur code $('#game-field').unbind('click');
id = parseInt(this.getAttribute('id'));
socket.emit('attack', id); /*when event repeats - that line creates problems like a snowball*/
});
}