[英]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.