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

например, следующее выбирает деление с id= "2":

row = $("body").find("#2");

Как мне сделать что-то вроде этого:

row_id = 5;
row = $("body").find(row_id);

приведенный выше синтаксис приводит к ошибке. Я проверил документацию jQuery и ответы здесь без успеха.

6 ответов


row = $("body").find('#' + row_id);

более важно делать дополнительное тело.find не влияет на производительность. Правильный способ сделать это просто:

row = $('#' + row_id);

самый короткий путь будет такой:

$("#" + row_id)

ограничение поиска телом не имеет никакой пользы.

кроме того, вы должны рассмотреть возможность переименования ids К чему-то более значимому (и HTML-совместимому в соответствии с ответом Паоло), особенно если у вас есть другой набор данных, который также должен быть назван.


делаешь $('body').find(); не требуется при поиске по ID; нет увеличения производительности.

обратите внимание, что наличие идентификатора, начинающегося с номера, -недопустимый HTML:

маркеры ID и NAME должны начинаться с буквы ([A-Za-z]) и могут сопровождаться любым количеством букв, цифр ([0-9]), дефисов ("-"), подчеркиваний ("_"), двоеточий ( " :") и периодов (".").


вы можете сделать это так:

row_id = 5;
row = $("body").find('#'+row_id);

есть две проблемы с вашим кодом

  1. чтобы найти элемент по ID, вы должны префикс его с"#"
  2. вы пытаетесь передать число в функцию find, когда требуется строка (передача " # "+ 5 исправит это, так как сначала преобразует 5 в" 5")

Я мало знаю о jQuery, но попробуйте следующее:

row_id = "#5";
row = $("body").find(row_id);

Edit: конечно, если переменная является числом, вы должны добавить "#" на фронт:

row_id = 5
row = $("body").find("#"+row_id);