2013-05-03 11 views
5

Per qualche motivo non sono in grado di recuperare gli ingressi nascosti da id utilizzando jQuery.Targeting ingressi nascosti da id utilizzando jQuery

posso fare

> $('input') 
[<input type=​"checkbox" name=​"property-type" id checked>​, <input type=​"checkbox" name=​"property-type" id checked>​, <input type=​"checkbox" name=​"property-type" id>​, <input type=​"checkbox" name=​"property-type" id>​, <input type=​"hidden" name=​"no-of-rooms" id=​"1-rooms">​, <input type=​"hidden" name=​"no-of-rooms" id=​"2-rooms" checked>​, <input type=​"hidden" name=​"no-of-rooms" id=​"3-rooms" checked>​, <input type=​"hidden" name=​"no-of-rooms" id=​"4-rooms">​, <input type=​"hidden" name=​"no-of-rooms" id=​"5-rooms">​, <input type=​"hidden" name=​"no-of-rooms" id=​"over-5-rooms">​, <input type=​"checkbox" name=​"property-type" id>​, <input type=​"checkbox" name=​"property-type" id>​, <input type=​"checkbox" name=​"property-type" id>​] 

che mi ottiene tutti gli ingressi sulla pagina bene, compresi quelli di tipo = nascosto.

posso anche fare

> $('input[type="hidden"]') 
[<input type=​"hidden" name=​"no-of-rooms" id=​"1-rooms">​, <input type=​"hidden" name=​"no-of-rooms" id=​"2-rooms" checked>​, <input type=​"hidden" name=​"no-of-rooms" id=​"3-rooms" checked>​, <input type=​"hidden" name=​"no-of-rooms" id=​"4-rooms">​, <input type=​"hidden" name=​"no-of-rooms" id=​"5-rooms">​, <input type=​"hidden" name=​"no-of-rooms" id=​"over-5-rooms">​] 

che ottiene me tutti i miei campi nascosti. Nota che hanno tutti un ID.

Per qualche motivo, tentare di indirizzare questi input tramite il loro ID, con o senza lo [type="hidden"] incluso, mi fornirà una lista vuota.

> $('input[type="hidden"]#2-rooms') 
[] 
> $('input#2-rooms') 
[] 

sono riuscito a trovare una soluzione alternativa, semplicemente non li targeting per la loro ID-s, ma sarebbe utile sapere perché questo non sembra possibile.

EDIT

Usando solo $('#2-rooms') funziona per me ed è a quanto pare l'approccio migliore. Tuttavia, non sono ancora sicuro del motivo per cui $('input#2-rooms') non funziona, poiché I includeva il doctype html5 (<!DOCTYPE html>) e capisco che gli id ​​che iniziano con i numeri dovrebbero in questo caso essere a posto.

+0

Ti è capitato di provare '$ ('# 2-rooms')' –

+1

Molto probabilmente non stai usando HTML5, e prima di HTML5, gli ID non potevano iniziare con un carattere numerico. Prova ad usare il doctype html5 per confermare: '' (oppure puoi semplicemente cambiare l'id per non usare un carattere numerico come primo carattere) –

+0

Stupido per non provare '$ ('# 2-stanze') ', che funziona (anche se preferirei comunque specificare che è un input per chiarezza ..). Ho anche provato ora '$ ('input # over-5-rooms')' che non inizia con un numero e funziona pure. Ho incluso il doctype html5, quindi questo non dovrebbe essere il problema, anche confermato dal fatto che '$ ('# 2-rooms')' sembra funzionare bene. – Elise

risposta

1

È possibile utilizzare i caratteri jolly con l'uso del selettore di attributo, anziché utilizzare il selettore di identificazione.

$('[id$=rooms]') 

In alternativa, utilizzare * per contiene

$('[id*=rooms]') 

O se avete singolo elemento con id, live demo

$('#2-rooms') 

Edit Se avete singolo elemento con id poi puoi semplicemente usare il selettore di id $('#2-rooms') se di più quindi un elemento ha lo stesso id quindi non è un codice html valido dovresti avere id univoci. Se hai id con pattern come 2 stanze, 3 stanze, allora hai usato il selettore di attributo con caratteri jolly.

+1

OP ha trovato un problema, la domanda è perché non funziona il selettore di ID. –

+0

Penso OP in soluzione OP Dobbiamo dare ingresso nel selettore come $ ('# 2 di ingresso-sale') – Adil

+1

Questo funziona così, come fa mira singoli campi nascosti utilizzando '$ ('ingresso [id =" 2- sale "] ')'. Grazie! – Elise

Problemi correlati