Массив идентификаторов - как выбрать с помощью JavaScript / JQuery? - PullRequest
12 голосов
/ 14 сентября 2009

У меня есть массив идентификаторов элементов, возвращающихся из проверки на стороне сервера. Идентификаторы не имеют префикса «#». Вместо того, чтобы проходить через массив и добавлять префикс # к каждому члену, существуют ли средства jquery для прямого выбора всех элементов по их идентификаторам?

Ответы [ 6 ]

21 голосов
/ 14 сентября 2009

Вы можете просто присоединиться к ним, как это:

var ids = ['div1', 'div2', 'div3'];

$('#' + ids.join(',#')).click(function() { alert('hi'); });
13 голосов
/ 14 сентября 2009

Не забывайте "старомодный" getElementById - он не требует хеширования идентификаторов Затем просто отправьте узлы в jQuery, чтобы получить объект jQuery:

var ids = ['jq-primarySearch', 'jq-n-CSS'];
var nodes = $.map( ids, function(i) { return document.getElementById(i) } );
var jqObj = $(nodes);
4 голосов
/ 14 сентября 2009

(NB - я не пробовал это - это не в моей голове)

Допустим, ваш массив "arr".

Не могли бы вы отобразить ваш массив строковых идентификаторов в массив объектов jQuery, а затем объединить их все, используя обычный селектор jQuery?

$($.map(arr, function(id) { return $('#' + id); }))
3 голосов
/ 14 сентября 2009

В jQuery вы можете выбрать по идентификатору, как это

$("[id=id_value]"); // returns 1 id

если вы назовете их как id_1 и id_2, вы можете сделать это

$("[id^='id_]") // returns multiple 
1 голос
/ 14 сентября 2009

Просто сделайте выбор узла самостоятельно, затем оберните результат:

$(document.getElementById(id))

сохраняет конструкцию строкового селектора, который jQuery должен будет только проанализировать, а затем сделать точно то же самое. Кроме того, вам не нужно беспокоиться о экранировании таких символов, как «:» и «.», Которые действительны в идентификаторах, но означают что-то другое в селекторах.

0 голосов
/ 14 сентября 2009

Если у вас есть идентификатор в виде строки, вы можете выбрать его в jQuery, как это

$("#"+id); //gives you one element

Если у вас есть несколько одинаковых идентификаторов, используйте предложение Эльзо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...