как отключить событие в jquery? - PullRequest
0 голосов
/ 02 февраля 2020

как отключить событие в jquery?

, чтобы отключить ячейку после нажатия на нее, которую я пробовал с помощью $ ('. Cell'). Off (); после event.target, но он не работает
, а также я попытался с $ ('. cell'). unbind (); после 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)

1 Ответ

0 голосов
/ 02 февраля 2020

Я бы посоветовал следующий код.

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);

У вас возникли проблемы с синтаксисом, отсутствует ;. Кроме того, поскольку ваша функция не определила параметр события, он не будет передан в функцию при обратном вызове, поэтому у вас не будет переменной event для ссылки, это будет null или undefined.

Что касается return false, я бы рассмотрел: Лучше ли возвращать `undefined` или` null` из функции javascript?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...