我正在使用jQuery创建元素并在过程中为它们分配ID。稍后在我的代码中,我想通过他们的ID访问这些元素。但是,我无法用jQuery做到这一点。如果我只使用核心JS,它可以工作。为什么会这样?
var createTable = function(rows, columns, height, width) {
var $table = $("<table>");
$("body").append($table);
for (var i = 1; i < rows + 1; i++) {
var $tr = $("<tr>");
$table.append($tr);
for (var j = 1; j < columns + 1; j++) {
var $td = $("<td>", { id: i + "." + j });
$td.css("height", height + "px").css("width", width + "px")
.css("border", "1px black solid");
$tr.append($td);
}
}
}
createTable(4, 4, 150, 100);
不起作用:
$("#1.1").css("border", "1px red solid");
使用:
var onePointOne = document.getElementById("1.1");
onePointOne.style.border = "1px red solid";
答案 0 :(得分:3)
点在选择器中有特殊含义:它们是类选择器。您将需要转义点以找到正确的ID:
$('#1\\.1')...
答案 1 :(得分:2)
.
运算符表示类,因此它会搜索id 1并且它是1级但你不能访问那些但你的id包含.
元字符,你需要它使用斜杠来转义元字符:
$("#1\\.1").css("border", "1px red solid");
see more information about this here
但我建议您不要使用.
运算符作为您的ID,您可以像1-1
一样分配,例如$('#1-1')
我还建议你不要使用从数字开始的id。
答案 2 :(得分:1)
试试这个,它会起作用:
$("#1\\.1").css("border", "1px red solid !important");