簡體   English   中英

jQuery的獲取'ID'屬性

[英]JQuery get 'id' attribute

因此,我有下面的代碼生成一個表並將click函數應用於表中的每個td。 它還會應用以1開頭的增量ID。當用戶單擊td元素時,我試圖檢索其單擊的<td>的ID。 但是,選擇器的值為[對象窗口]。 我敢肯定這很簡單,但是我在這里遇到的類似問題都沒有幫助,而且我沒有看到。

$("#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');
        }
        */


    });

});

代碼中的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 ); 

您的代碼中有2個錯誤,您創建的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方法實際上是window.toString。 通過不為toString指定父對象,可以在全局窗口對象上調用該方法。 這就是為什么您看到“ [object Window]”的原因,它返回了調用對象的字符串表示形式。

您根本不需要toString。 將字符串添加到字符串時,Javascript將數字轉換為字符串。

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

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

您的問題出在$(“#CMGame”)。click(function()事件中,當嘗試使用toString(count)javascript和jquery轉換為字符串時,它們不了解它們確實理解count.toString(),這是源javaScript toString函數

關於一些代碼的建議:

  • 首先,這個var board = $(“#CMBoard”); 您將html元素傳遞給javascript變量,因為您可以執行此board.html(htmlString); 我認為您可以這樣做,因此您的函數可以比使用其他方法來操作DOM更快,但是在這種情況下,我們似乎並不是在尋找最佳性能,因此其他選擇就是使用此$(“#CMBoard”)使其保持簡單.append(htmlString)

  • 您為每個元素設置的ID根本不是一個好習慣,並且建議對HTML5與HTML4外觀兼容。 注意:使用除ASCII字母和數字之外的其他字符,“ _”,“-”和“。”。 可能會導致兼容性問題,因為HTML 4中不允許這樣做。盡管HTML 5中取消了此限制,但ID應當以字母開頭以確保兼容性。 您可以在全局屬性ID中找到它,因此最好設置一個真實的ID名稱,您可以在代碼中執行類似的操作htmlString += "<td id='item_" + count.toString() + "'></td>"; 因此ID會像id =“ item_1”一樣出現

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM