.hasClass()忘记了类的分配。为什么?

时间:2014-01-11 14:41:00

标签: javascript jquery html css jquery-selectors

代码:

<script>

    $(document).ready(function () {

        $('#lifegrid tr td').click(function () {
            $(this).addClass('selected');
        });

        $('#animatebutton').click(function () {
            $(this).addClass('green');
            animate();
        });

        function animate() {

            var cell = [];

            for (var x = 0; x < 16; x++) {  

                cell[y] = [];

                for (var y = 0; y < 8; y++) {

                    if ($('#' + x + ',' + y).hasClass('selected')) {
                        cell[x,y] = 'alive';
                        console.log( x + "," + y + " is alive")

                    } else {
                        cell[x,y] = 'dead';
                        console.log( x + "," + y + " is dead")
                    }
                }
            }
        }
    });

</script>

我的代码还包含<table><td>元素,所有元素都有“x,y”形式的I​​D。示例:id="4,12"

此代码仅返回“<coordinate>已死”,无论该元素是否已分配“已选定”类。为什么呢?

1 个答案:

答案 0 :(得分:5)

在元素中使用逗号“id”值是有问题的,因为逗号是CSS选择器元字符。

如果使用反斜杠(或使用逗号以外的其他内容)转义逗号,它应该有效。

                if ($('#' + x + '\\,' + y).hasClass('selected')) {

请注意,我使用了 double 反斜杠,因为必须让反斜杠超过字符串常量语法。