【问题标题】:.hasClass() forgets class assignments. Why?.hasClass() 忘记课堂作业。为什么?
【发布时间】:2014-01-12 12:44:34
【问题描述】:

代码:

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

我的代码还包含一个 &lt;table&gt;&lt;td&gt; 元素,所有这些元素的 id 格式为“x,y”。示例:id="4,12"

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

【问题讨论】:

  • 所以你的选择器看起来像$('#1,2')2 不是有效标签,也不是任何其他数字。
  • 你也可以分享html吗

标签: javascript jquery html css jquery-selectors


【解决方案1】:

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

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

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

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

【讨论】:

  • 解决了!一旦 stackoverflow 计时器机制允许,将接受答案。谢谢!
  • @user2811095 很高兴听到这个消息!
  • 还要注意pre-html5,逗号在id中是无效的。
猜你喜欢
  • 1970-01-01
  • 2021-12-22
  • 1970-01-01
  • 1970-01-01
  • 2016-02-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多