2009-09-14 1 views
11

Possiedo un array di identificatori di elementi, provenienti da alcune convalide sul lato server. Gli ID non hanno il prefisso "#". Piuttosto che passare attraverso l'array e prefissare un # per ogni membro, c'è un mezzo jquery per selezionare direttamente tutti gli elementi con i loro ID?Matrice di ID: come selezionare con JavaScript/JQuery?

+0

si voleva una risposta jQuery e choosed un JS uno :( –

+0

@Elzo, non c'era una soluzione soddisfacente JQ purtroppo. –

+1

@Elzo, direi che la sua soluzione è stata una grande combinazione di JS e jQuery. Perché essere bloccato su jQuery-solo quando Javascript lo farà. (scavando nel passato.) – davidethell

risposta

12

Non dimenticare "vecchio stile" getElementById - non richiede l'hashing degli ID. Poi basta nutrire i nodi per jQuery per ottenere un oggetto jQuery:

var ids = ['jq-primarySearch', 'jq-n-CSS']; 
var nodes = $.map(ids, function(i) { return document.getElementById(i) }); 
var jqObj = $(nodes); 
+1

JavaScript è davvero zoppo. '$ .map (ids, document.getElementById) 'non funziona davvero! –

3

In jQuery è possibile selezionare per ID come questo

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

se il nome di loro qualcosa di simile ID_1 e ID_2 si può fare questo

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

Se avete la ID come una stringa è possibile selezionarlo in jQuery come questo

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

Se si dispone di ID più di che sono simili, quindi utilizzare sugge di Elzo zione.

21

Si potrebbe semplicemente unirsi a loro, in questo modo:

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

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

Ora stiamo parlando! – Andreas

+1

Ora stiamo cucinando a gas! –

4

(NB - non ho provato questo - questa è la parte superiore della mia testa)

Diciamo che la matrice è "arr ".

Non è possibile mappare la serie di identificatori di stringa in una matrice di oggetti jQuery, quindi concatenarli tutti utilizzando il solito selettore jQuery?

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

Basta fare la selezione del nodo da soli poi avvolgere il risultato:

$(document.getElementById(id)) 

salva la costruzione di un selettore di stringa che jQuery avrà solo analizzare indietro e poi fare esattamente la stessa cosa Inoltre, non devi preoccuparti di caratteri di escape come ':' e '.' Che sono validi negli ID ma significano qualcos'altro nei selettori.