2009-05-24 9 views
22

Cosa viene restituito se $ ('# id') non corrisponde a qualcosa? Ho pensato che sarebbe stato nullo o falso o qualcosa di simile quindi ho provato a controllare in questo modo:

var item = $('#item'); 
if (!item){ 
    ... 
} 

Ma questo non ha funzionato.

risposta

44

Si possono trovare quanti elementi sono stati abbinati con:

$('selector').length 

Per verificare se non elementi sono stati abbinati, uso:

var item = $('#item'); 
if (item.length == 0) { 
    // ... 
} 
+5

Sì, questo è il modo corretto. Per rispondere alla domanda, tuttavia, restituisce un oggetto/array di elementi DOM che corrispondono. E la proprietà 'length' può essere utilizzata su qualsiasi oggetto javascript (array, string, ecc ...) per determinarne la lunghezza (elementi numerici, caratteri numerici, ecc ...). – KyleFarris

+2

basta usare se (item.length) – redsquare

5

Un oggetto jQuery che non contiene nodi DOM.

Si dovrebbe essere in grado di utilizzare

var item = $('#item'); 
if (!item[0]){ 
    ... 
} 

per il check esistenza.

1

Un alias del attributo di lunghezza è il metodo size() . Così che, fondamentalmente, potrebbe anche interrogare:

$ ("selettore") size()

per vedere quanti elementi sono abbinati..

7

Mentre $('selector').length è ideale per scoprire quanti oggetti il ​​tuo selettore corrisponde, è in realtà completamente inutile. La cosa su jQuery è che tutte le funzioni basate su selettore usano internamente la lunghezza, quindi puoi semplicemente fare $(selector).hide() (o qualsiasi altra cosa) e non richiede alcuna azione per un set vuoto.

+0

Di solito è corretto, ma una volta ogni tanto è sufficiente controllare la presenza di un elemento. Un buon punto però, quindi +1 in ogni caso, poiché nella maggior parte dei casi sei corretto. –

Problemi correlati