Как получить доступ к элементам, которые были созданы в jQuery с помощью jQuery

0

Я создаю элементы с помощью jQuery и назначая им идентификаторы в процессе. Позже в моем коде я хочу получить доступ к этим элементам через их идентификатор. Однако я не могу это сделать с помощью 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
    Смотрите, ваш код работает нормально только http://jsfiddle.net/wUf93/
Теги:

3 ответа

3

Точка имеет особое значение в селекторах: они являются селекторами классов. Вам нужно будет избежать точки, чтобы найти правильный идентификатор:

$('#1\\.1')...
2

. оператор обозначает класс, поэтому он будет искать идентификатор 1 и его класс 1, но вы не обращаетесь к ним, кроме вашего идентификатора . метасимвол, для которого вам нужно использовать слэш для экранирования метасимвола:

$("#1\\.1").css("border", "1px red solid");

подробнее об этом здесь

Но я бы рекомендовал вам не использовать . оператора для вашего идентификатора, вы можете назначить его как 1-1 для которого вы можете легко получить доступ, например $('#1-1')

И еще я бы рекомендовал вам не использовать id, начиная с номера.

  • 0
    или, более просто и менее "некрасиво", не используйте . на первом месте!
1

Попробуйте это, он будет работать:

$("#1\\.1").css("border", "1px red solid !important");
  • 0
    нет необходимости использовать важные, просто экранирование персонажа будет работать, и, к вашему сведению, важно, что вы применяете, не будет работать ....

Ещё вопросы

Сообщество Overcoder
Наверх
Меню