简体   繁体   English

如何禁用jquery中的事件?

[英]how to disable event in jquery?

how to disable event in jquery ?如何在 jquery 中禁用事件?

ined to disable the cell after click on it i tried with $('.cells').off();单击后禁用单元格我尝试使用 $('.cells').off(); after event.target but it doesn't work在 event.target 之后但它不起作用
and also i tried with $('.cells').unbind();我也试过 $('.cells').unbind(); after event.target and after click listener but i have the same bugs在 event.target 和单击侦听器之后,但我有相同的错误

    const changeTurn = function Turne() {
        let board, result;
        let player1 = '';
        let player2 = '';
        if (turn === 1) {
            if (player1 !== '' || winningCase(gameBoard()) !== 0 ||player2 !== '') {
               return;
            }
            player1 = 'X'
             event.target.innerHTML = player1
            board = gameBoard();
            result = winningCase(board);
            if (result !== 0) {
                gameOver(result);
                return;
            }
            turn++
            moveCuont++
} else {

            if (player1 !== '' || winningCase(gameBoard()) !== 0 ||
                player2 !== '') {
                return;
            }
            player2 = 'O'
            event.target.innerHTML = player2
            board = gameBoard();
            result = winningCase(board);
            if (result !== 0) {
                gameOver(result);
                return;
            }
           turn--
           moveCuont++
            eve.off('click')
        }
        result = checkWinner(board);
        if (moveCuont === 9) {
            gameOver(result);
            return;
        }
    }
    $(".cells").click(changeTurn)

I would advise the following code.我会建议以下代码。

function changeTurn(event) {
  var board, result;
  var player1 = '';
  var player2 = '';
  var self = $(event.target);
  if (turn === 1) {
    if (player1 !== '' || winningCase(gameBoard()) !== 0 ||player2 !== '') {
      return false;
    }
    player1 = 'X'
    self.html(player1);
    board = gameBoard();
    result = winningCase(board);
    if (result !== 0) {
      gameOver(result);
      return false;
    }
    turn++;
    moveCuont++;
  } else {
    if (player1 !== '' || winningCase(gameBoard()) !== 0 ||
      player2 !== '') {
      return false;
    }
    player2 = 'O'
    self.html(player2);
    board = gameBoard();
    result = winningCase(board);
    if (result !== 0) {
      gameOver(result);
      return false;
    }
    turn--;
    moveCuont++;
    self.off('click');
  }
  result = checkWinner(board);
  if (moveCuont === 9) {
    gameOver(result);
    return false;
  }
}
$(".cells").click(changeTurn);

You had a number of syntax issues, missing ;您有许多语法问题,缺少; . . Also since your function did not define an event parameter, it would not be passed into the function on callback, so you would not have an event variable to reference, it would be null or undefined .此外,由于您的函数未定义事件参数,因此不会在回调时将其传递到函数中,因此您将没有要引用的event变量,它将为nullundefined

In regards to return false , I would review: Is it better to return `undefined` or `null` from a javascript function?关于return false ,我会回顾: 从 javascript 函数返回 `undefined` 还是 `null` 更好?

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM