Массив идентификаторов-как выбрать с помощью 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был по.