Як вибрати елемент у jQuery, використовуючи змінну для ідентифікатора?


100

Наприклад, наступне вибирає поділ з id = "2":

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

Як зробити щось подібне:

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

Вищенаведений синтаксис створює помилку. Я перевірив тут документацію та відповіді jQuery без успіху.


6
Вау, п’ять відповідей, які точно такі ж ...
Зіфре

Відповіді:


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

Ще важливіше робити додатковий body.find не впливає на продуктивність. Правильний спосіб зробити це просто:

row = $('#' + row_id);

46

Найкоротшим шляхом буде:

$("#" + row_id)

Обмеження пошуку тіла не має ніякої користі.

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


Мені подобається лаконічне. Я просто використав це з підказками qTip2, чудово працює. Мені трохи цікаво, що таке покарання за ефективність за те, що вони генерують багато таких «своєчасно», як відповідь на введення даних користувачів.
PJ Brunet

26

Робити $('body').find();це не потрібно, коли шукаєте ідентифікатор; немає підвищення продуктивності.

Зауважте також, що наявність ідентифікатора, який починається з номера, не є дійсним HTML :

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



1

Є дві проблеми з вашим кодом

  1. Щоб знайти елемент за ідентифікатором, слід встановити його "#"
  2. Ви намагаєтеся передати число функції пошуку, коли потрібна рядок (передача "#" + 5 виправить це, оскільки вона перетворить 5 в "5" спочатку)

0

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

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

Редагувати: Звичайно, якщо змінна є числом, ви повинні додати "#"до переду:

row_id = 5
row = $("body").find("#"+row_id);
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.