JQuery获取'id'属性

JQuery get 'id' attribute

本文关键字:属性 id 获取 JQuery      更新时间:2023-09-26

因此,我有以下代码生成一个表,并将一个单击函数应用于表中的每个td。它还应用以1开头的增量id。当用户点击td元素时,我试图检索他们点击的<td>的id。但是选择器的值是[object Window]。我确信这是一件简单的事情,但我在这里的类似问题都没有帮助,我没有看到它

$("#CMGame").click(function() {
    $("#TTTContent").hide();
    $("#CMContent").show();
    var board = $("#CMBoard");
    var htmlString = "";
    var count = 0;
    for (var i = 0; i < 20; i++) {
        htmlString += "<tr>";
        for (var i2 = 0; i2 < 20; i2++) {
            count++;
            htmlString += "<td id='" + toString(count) + "'></td>";
        }
        htmlString += "</tr>";
    }
    board.html(htmlString);
    $("#CMBoard td").click(function() {
        var piece = $(this);
        var selector = piece.attr('id');
        alert(selector);
        /*
        if (CMBArray[selector] != 1 OR CMBArray[selector] != 2) {
            CMBArray[selector] = 1;
            piece.addClass('selected');
        }
        */

    });
});

您的代码中有两个错误,您创建的td id不能只是一个数字,它必须以字母开头,然后您可以删除toString(count)并仅使用count,或者将其更改为count.toString(),这是正确的方法。

这是规格。对于DOM id:
https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/id

这里是toString()
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toString

代码中的toString错误。更改
toString(count)

count.toLocaleString()

toString(count)实际上就像说this.toString(),在您的情况下,它基本上意味着window.toString(),这导致了[object Window]

相反,请使用count.toString()

这里有一个快速测试:

var count = 0;
console.log('second toString: ' + toString(count) );
console.log('second toString: ' + count.toString );

请记住,无论何时在Javascript中连接字符串,默认情况下都会对所有对象调用toString方法。例如,这两个表达式产生相同的输出:

var number = 5;
console.log( 'The number is ' + number.toString() );
console.log( 'The number is ' + number );

您正在调用的toString方法实际上是window.toString。不为toString指定父对象,就是在调用全局窗口对象上的方法。这就是为什么您看到"[object Window]",它返回调用对象的字符串表示。

你根本不需要toString。当您将字符串添加到字符串中时,Javascript将其强制转换为数字。

this.id将返回jQuery元素的id。例如:

$("td").click(function(){
    alert(this.id);
});

您的问题出现在事件$("#CMGame")中。单击(function()当试图用toString(count)转换为字符串时,javascript和jquery不明白他们确实理解count。toString()这里是源javascript toString函数。

关于你的一些代码的建议:

  • 首先这个var板=$("#CMBoard");您将html元素传递给一个javascript变量,以便执行此操作。html(htmlString);我认为你这样做是为了让你的函数比使用其他方法来操作DOM更快,但在这种情况下,我们似乎不是在寻找最佳性能,所以其他选项是用这个$("#CMBoard").append(htmlString)保持简单

  • 你为每个元素设置的id是一个数字,这根本不是一个好的做法,而且还有一个关于HTML5到HTML4外观兼容性的建议;注意:使用ASCII字母和数字、"_"、"-"answers"."以外的字符可能会导致兼容性问题,因为它们在HTML4中是不允许的。尽管HTML5中取消了这一限制,但为了兼容性,ID应该以字母开头。你可以在全局属性id中找到它,所以最好设置一个真实的id名称,你可以在代码htmlString += "<td id='item_" + count.toString() + "'></td>";中这样做所以id会像id="item_1"一样出现