【问题标题】:How to avoid repeats of Javascript events?如何避免 Javascript 事件的重复?
【发布时间】:2014-05-21 11:48:09
【问题描述】:

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

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

【问题讨论】:

    标签: javascript jquery socket.io jquery-events


    【解决方案1】:

    使用 one 选择器一次绑定事件。它只能工作一次

      $('#attack').one('click', function(){
             // your code
    });
    
      $('#game-field').one('click', '.cell', function() {
               // your code
    });
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-23
      • 1970-01-01
      • 2018-05-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多