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

StackOverflow https://stackoverflow.com/questions/1420707

  •  07-07-2019
  •  | 
  •  

Вопрос

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

Это было полезно?

Решение

Не забудь " старомодный " 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_value]"); // returns 1 id

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

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

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

$(document.getElementById(id))

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top