2009-09-14 10 views
11

Tengo una matriz de identificadores de elementos, que provienen de alguna validación del lado del servidor. Los ID no tienen el prefijo '#'. En lugar de ir a través de la matriz y poner un prefijo # a cada miembro, ¿hay algún método para seleccionar directamente todos los elementos por sus ID?Matriz de ID: cómo seleccionar con JavaScript/JQuery?

+0

quería una respuesta de jQuery y eligió una de JS :( –

+0

@Elzo, lamentablemente no había una solución de jq satisfactoria. –

+1

@Elzo, diría que su solución fue una gran combinación de JS y jQuery. atascado en jQuery, solo cuando JavaScript lo haga. (desenterrando el pasado :) :) – davidethell

Respuesta

12

no lo olvides "pasada de moda" getElemenById - que no requiere hash los identificadores. A continuación, sólo alimentar a los nodos de 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); 
+1

JavaScript es realmente cojo. '$ .map (ids, document.getElementById) '¡no funciona de hecho! –

3

En jQuery puede seleccionar por ID como esto

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

si los nombra algo así como id_1 y ID_2 puede hacerlo

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

Si usted tiene la ID como una cadena que pueda seleccionarlo en jQuery como esto

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

Si tiene varias identificaciones que son similares, a continuación, utilizar suge de Elzo ción.

21

Se podía unirse a ellos, así:

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

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

¡Ahora estamos hablando! – Andreas

+1

¡Ahora estamos cocinando en gas! –

4

(NB - no he probado esto - esto es la parte superior de la cabeza)

Digamos que su matriz es "arr ".

¿No pudo asignar su matriz de identificadores de cadena en una matriz de objetos jQuery, y luego concatenarlos todos utilizando el selector jQuery habitual?

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

Eso sí, la selección de nodo a sí mismo y luego envuelva el resultado:

$(document.getElementById(id)) 

ahorra la construcción de un selector de cadena que jQuery sólo se tendrá que analizar la espalda y luego hacer exactamente lo mismo. Además, no tiene que preocuparse por los caracteres de escape como ':' y '.' Que son válidos en los ID, pero significan algo más en los selectores.

Cuestiones relacionadas