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?

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top