如何使用jQuery访问在jQuery中创建的元素

时间:2014-04-29 04:11:45

标签: javascript jquery

我正在使用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";

3 个答案:

答案 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");