Come si seleziona un elemento in jQuery utilizzando una variabile per l'ID?


100

Ad esempio, quanto segue seleziona una divisione con id = "2":

row = $("body").find("#2");

Come faccio a fare qualcosa di simile:

row_id = 5;
row = $("body").find(row_id);

La sintassi precedente produce un errore. Ho controllato la documentazione e le risposte di jQuery qui senza successo.


6
Wow, cinque risposte che sono esattamente le stesse ...
Zifre

Risposte:


189
row = $("body").find('#' + row_id);

Ancora più importante, eseguire il body.find aggiuntivo non ha alcun impatto sulle prestazioni. Il modo corretto per farlo è semplicemente:

row = $('#' + row_id);

46

La via più breve sarebbe:

$("#" + row_id)

Limitare la ricerca al corpo non ha alcun beneficio.

Inoltre, dovresti considerare di rinominare i tuoi messaggi idin qualcosa di più significativo (e conforme all'HTML come da risposta di Paolo), specialmente se hai anche un altro set di dati che deve essere nominato.


Mi piace il conciso. L'ho appena usato con i suggerimenti di qTip2, funziona alla grande. Sono un po 'curioso di sapere quale sia la penalizzazione delle prestazioni per la generazione di molti di questi "just in time", ad esempio in risposta all'input dell'utente.
PJ Brunet

26

Non $('body').find();è necessario quando si cerca tramite ID; non vi è alcun miglioramento delle prestazioni.

Tieni inoltre presente che avere un ID che inizia con un numero non è HTML valido :

I token ID e NAME devono iniziare con una lettera ([A-Za-z]) e possono essere seguiti da qualsiasi numero di lettere, cifre ([0-9]), trattini ("-"), trattini bassi ("_") , due punti (":") e punti (".").


6

Puoi farlo in questo modo:

row_id = 5;
row = $("body").find('#'+row_id);

1

Ci sono due problemi con il tuo codice

  1. Per trovare un elemento in base all'ID, devi anteporre il prefisso "#"
  2. Stai tentando di passare un numero alla funzione di ricerca quando è richiesta una stringa (passare "#" + 5 risolverebbe il problema poiché convertirà prima il 5 in un "5")

0

Non so molto di jQuery, ma prova questo:

row_id = "#5";
row = $("body").find(row_id);

Modifica: ovviamente, se la variabile è un numero, devi aggiungere "#"in primo piano:

row_id = 5
row = $("body").find("#"+row_id);
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.