2016-04-29 7 views
7

Se il mio html è come qui di seguitoQual è il necessasity di # in jQuery

<div id="TestHash"> </div> 

posso accedervi come $("#TestHash"), $(TestHash). Entrambi risulteranno uguali. qual è l'utilizzo dell'elemento senza # ??

+0

entrambi non avranno lo stesso risultato. controllare correttamente. il secondo selettore genererà un errore poiché "TestHash" è usato come variabile. –

+1

Ci dovrebbe essere errore con '$ (TestHash)'. –

+0

$ (TestHash) dovrebbe arrestarsi in modo anomalo, poiché non è stato definito alcun TestHash var. Quindi, è uguale a $ (non definito); –

risposta

6

In effetti, esiste un artefatto legacy in Javascript: gli elementi con un ID popolano automaticamente lo spazio dei nomi globale.

Ecco perché è possibile accedervi direttamente come siete ($(TestHash)). Tuttavia, è un pezzo incompreso lasciato dai browser legacy, quindi non dovresti fare affidamento su di esso.

Ove possibile, utilizzare sempre la versione $("#myId").

+0

che uso sempre con # solo. Ho visto del codice senza selettori. Sono rimasto sorpreso senza alcuna eccezione. Funziona bene. Devo sapere come funziona. Questo è il tema che ho postato qui. – suresh

+1

Yep fair call: cerca di evitarlo. Non penso che verrà abbandonato come funzionalità nei browser in qualsiasi momento - ma causerà problemi quando inizi a modulare il tuo js e cosa no. – Chris

+0

+1 stava per scrivere una risposta in precedenza e collegarmi ad alcune risorse con maggiori informazioni ma è sorprendentemente difficile trovare qualcosa al riguardo ... L'unica cosa che so è che è il capitolo 14.7 in 'Javascript: The Definitive Guide (6th edizione) ' –

Problemi correlati