如何避免重复javascript事件?

时间:2014-05-21 11:48:10

标签: javascript jquery javascript-events socket.io

我是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*/
        });
    });
});

如何避免不必要的重复事件?

1 个答案:

答案 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*/
        });
}