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?
risposta
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);
JavaScript è davvero zoppo. '$ .map (ids, document.getElementById) 'non funziona davvero! –
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
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.
Si potrebbe semplicemente unirsi a loro, in questo modo:
var ids = ['div1', 'div2', 'div3'];
$('#' + ids.join(',#')).click(function() { alert('hi'); });
Ora stiamo parlando! – Andreas
Ora stiamo cucinando a gas! –
(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); }))
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.
si voleva una risposta jQuery e choosed un JS uno :( –
@Elzo, non c'era una soluzione soddisfacente JQ purtroppo. –
@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