2012-03-14 12 views
17

Qual è la sintassi jquery corretta per una chiamata getElementsByName?jQuery equivalente a "getElementsByName"

Ecco il mio codice javascript:

var test = document.getElementsByName(tableName)[0]; 

utilizzare questo restituisce un valore diverso:

var test = $("[name=tableName]"); 

Grazie in anticipo

+0

puoi dare un esempio dei risultati che stai ottenendo e di come sono diversi? – deltree

risposta

4

rimuovere l'indice dalla prima istruzione

Questi sono uguali.

var test = document.getElementsByName(tableName); 
var test = $("[name=tableName]"); 
+0

come posso accedere allo stesso indice [0] in jquery? – user1258430

+0

$ ("[name = tableName]"). Get (0); – westo

+2

@ user1258430 Just '[0]' funziona ... '$ (" ... ") [0]' –

2

"[name=tableName]" è una sintassi errata in 2 modi. Innanzitutto, dovresti inserire il tuo nome tra virgolette, quindi dovrebbe essere "[name='tableName']" e il secondo, nel primo caso, stai usando una variabile e nel secondo una stringa, quindi nella realtà è "[name='" + tableName + "']"

chiamata buona inoltre sul fatto che si dispone di un indice sulla chiamata getelementsbyname(), se si seleziona l'elemento [0], verrà restituito solo un articolo.

+0

come posso restituire lo stesso indice [0] in una sintassi jquery? – user1258430

+1

'$ (" [nome = '"+ tableName +"'] ").first(); ' – deltree

21

Utilizzare le virgolette intorno alla attribute selector:

$('[name="somenamehere"]'); 

Se è necessario utilizzare una variabile all'interno di un selettore, è necessario utilizzare concatenazione di stringhe per ottenere il valore della variabile:

$('[name="' + tableName + '"]'); 

In genere si dovrebbe evitare di usare l'attributo [name] a favore dell'attributo [id], perché la selezione sarebbe più semplice come:

$('#someidhere'); 
-or- 
$('#' + tableID); 
+0

Non funziona con le virgolette nelle versioni precedenti di jQuery? –

+0

@ ŠimeVidas, ricordo distintamente che ho riscontrato problemi con le virgolette sui selettori di attributi con una versione precedente di jQuery. È possibile che mi stia dimenticando. – zzzzBov

+0

@ ŠimeVidas, penso di averlo fatto all'indietro, penso che le versioni precedenti di jQuery * solo * supportassero valori di attributo quotati e che le versioni più recenti supportassero valori di attributo quotati o non quotati. – zzzzBov

0

se si vuole ottenere un valore di elemento di questo codice:

var test1 = $("[name='tableName']").val(); 
alert(test1); 

Queste sono uguali per ottenere il valore di indice specifico []:

Per stesso indice [0]

var test2 = $("[name='arryname[]']")[0]; 
alert(test2.value); 

var test3 = $("[name='arryname[]']").get([0]); 
alert(test3.value);