Matriz de ID: ¿cómo seleccionar con JavaScript / JQuery?
-
07-07-2019 - |
Pregunta
Tengo una matriz de identificadores de elementos, regresando de alguna validación del lado del servidor. Los ID no tienen el prefijo '#'. En lugar de pasar por la matriz y anteponer un # a cada miembro, ¿hay algún medio para seleccionar directamente todos los elementos por sus ID?
Solución
No te olvides de "anticuado" getElementById: no requiere hashing de los identificadores. Luego solo alimente los nodos a jQuery para obtener un objeto jQuery:
var ids = ['jq-primarySearch', 'jq-n-CSS'];
var nodes = $.map( ids, function(i) { return document.getElementById(i) } );
var jqObj = $(nodes);
Otros consejos
Podrías unirte a ellos, así:
var ids = ['div1', 'div2', 'div3'];
$('#' + ids.join(',#')).click(function() { alert('hi'); });
(Nota: no lo he intentado, está fuera de mi alcance)
Digamos que su matriz es " arr " ;.
¿No podría asignar su matriz de identificadores de cadena en una matriz de objetos jQuery, luego concatenarlos a todos utilizando el selector jQuery habitual?
$($.map(arr, function(id) { return $('#' + id); }))
En jQuery puede seleccionar por ID como este
$("[id=id_value]"); // returns 1 id
si los nombra algo así como id_1 e id_2, puede hacer esto
$("[id^='id_]") // returns multiple
Simplemente haga la selección del nodo usted mismo y luego ajuste el resultado:
$(document.getElementById(id))
guarda la construcción de un selector de cadena en el que jQuery solo tendrá que volver a analizar y luego hacer exactamente lo mismo. Además, no tiene que preocuparse por escapar de caracteres como ":" y "." Que son válidos en los ID pero significan algo más en los selectores.
Si tiene la ID como una cadena, puede seleccionarla en jQuery como esta
$("#"+id); //gives you one element
Si tiene varias ID que son similares, use la sugerencia de Elzo.