Массив идентификаторов-как выбрать с помощью JavaScript / JQuery?

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

6 ответов


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

var ids = ['jq-primarySearch', 'jq-n-CSS'];
var nodes = $.map( ids, function(i) { return document.getElementById(i) } );
var jqObj = $(nodes);

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

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

$('#' + ids.join(',#')).click(function() { alert('hi'); });

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

предположим, что Ваш массив "arr".

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

$($.map(arr, function(id) { return $('#' + id); }))

в jQuery вы можете выбрать по ID, как это

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

Если вы называете что-то вроде id_1 и id_2 вы можете сделать это

$("[id^='id_]") // returns multiple 

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

$(document.getElementById(id))

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


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

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

Если у вас есть несколько идентификаторов, которые являются подобными, а затем использовать предложение Elzoбыл по.