javascript - 单击元素后禁用 .toggleClass

标签 javascript jquery html css

我正在尝试创建一个井字游戏。玩家 1 选择他的标记 x 或 o,然后出现井字板。玩家 1 的标记,比方说 x,每当他悬停在一个空单元格上时都会以 0.5 的不透明度出现。单击时,单元格会收到一个 .addClass("clicked"),它将标记以 1 的不透明度插入到单元格中。我有一个 .toggleClass 函数可以在玩家标记之间切换。我希望玩家 1 的 x 留在棋盘上,而玩家 2 的悬停在任何空单元格上显示 o。我遇到的问题是,在我单击一个单元格以添加我的 x 后,整个板切换类。我希望每个没有“单击”类的单元格进行切换。我该怎么做?

这是玩家 1 选择 x 时的代码

case "x":
    $(function(){
        $(".board").addClass("o");
        $("td").click(function(){
            $(this).children("p").addClass("clicked x");
            $(".board").toggleClass("x o");
        });
    });
    break;

CSS

.x td:hover p {
    content:url("images/X.png");
    opacity:0.5;
    cursor:pointer;
}

.o td:hover p {
    content:url("images/O.png");
    opacity:0.5;
    cursor:pointer;
}

.x .clicked {
    content:url("images/X.png");
    opacity:1;
}

.o .clicked {
    content:url("images/O.png");
    opacity:1;
}

HTML

        <table class="hidden board" cellspacing="0">
            <p class="bigTitle hidden" id="turn">Player Turn</p>
            <tbody>
            <tr>
                <td id="a1"><p></p></td>
                <td id="a2"><p></p></td>
                <td id="a3"><p></p></td>
            </tr>
            <tr>
                <td id="b1"><p></p></td>
                <td id="b2"><p></p></td>
                <td id="b3"><p></p></td>    
            </tr>
            <tr>
                <td id="c1"><p></p></td>
                <td id="c2"><p></p></td>
                <td id="c3"><p></p></td>    
            </tr>
            </tbody>
        </table>

最佳答案

将函数添加到每个单独的单元格而不是面板,并在函数内检查单元格是否具有 clicked 类。

$(function(){
    $(".board td").addClass("o");
    $("td").click(function(){
        if( $(this).hasClass('clicked') ) {
            $(this).children("p").addClass("clicked x");
            $(this).toggleClass("x o");
        }
    });
});

相应地修改 CSS 选择器,例如

td.o:hover p { ...
.x.clicked { ...

关于javascript - 单击元素后禁用 .toggleClass,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39540509/

相关文章:

javascript - 根据circle1的速度计算两个圆接触的点

javascript - 将动态 Controller 传递给 Angular Directive(指令)

html - 为什么我的标志没有出现在我的导航栏上,但其他标志是?

php - 无法使用 StackExchanges 的 PageDown 将 markdown 转换为 HTML

javascript - 如何根据用户选择进行图像缩放

html - 尝试根据窗口大小缩放图像宽度/高度,同时将图像居中放置在页面上

javascript - jquery ui 1.7 自动完成显示选择对话框

javascript - 这个函数可以重写为 Ramda 管道吗?如何?

javascript - 如何在JQuery中的<tr>表中添加数据

javascript - 尽管已加载但无法显示元素?