Javascript TicTacToe click()范围错误

Javascript TicTacToe click()范围错误,javascript,jquery,html,Javascript,Jquery,Html,我正在尝试用一个机器人在JavaScript上创建一个Tictatcoe游戏。现在最重要的是,当单击一个类为“.freeSpot”的div时,必须将this.class更改为另一个类=>单击函数仅对“.freeSpot”类有效。在这个函数中,我还为机器人添加了一个回合函数。类似地,机器人将中间方块的类更改为“.botMarked”,玩家不应该更改中间方块,但它确实可以 $('.freeSpot').click(function () { console.log(this);

我正在尝试用一个机器人在JavaScript上创建一个Tictatcoe游戏。现在最重要的是,当单击一个类为“.freeSpot”的div时,必须将this.class更改为另一个类=>单击函数仅对“.freeSpot”类有效。在这个函数中,我还为机器人添加了一个回合函数。类似地,机器人将中间方块的类更改为“.botMarked”,玩家不应该更改中间方块,但它确实可以

$('.freeSpot').click(function () {
        console.log(this); 
        $(this).attr('class', "marked");
        $(this).html("X");
        winBool = checkWin();
        if (winBool == true) {
            alert("Player wins");
        }
        botTurn();
    });

    //TODO- finish for every turn
    function botTurn() {
        var Q = $('#Q').text();
        var W = $('#W').text();
        var E = $('#E').text();
        var A = $('#A').text();
        var S = $('#S').text();
        var D = $('#D').text();
        var Z = $('#Z').text();
        var X = $('#X').text();
        var C = $('#C').text();
        if (S != "X") {
            $("#S").attr("class", 'botMarked');
            $("#S").html("O"); 
        } 
我还注意到,如果我在.click函数之外调用botTurn()函数,程序工作正常,我该怎么办


完整项目:

函数绑定到具有.freeSpot类的对象。因此,当以后移除该类时,绑定仍然存在

你可以尝试几种选择

  • 在执行代码之前,检查对象是否仍有.freeSpot
  • 绑定到元素的父级。这样,只有具有.freeSpot类的child才会触发事件