2009-05-24 10 views
22

¿Qué se devuelve si $ ('# id') no coincide con nada? Pensé que sería nulo o falsa o algo similar, así que traté de comprobar de este modo:

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

Pero eso no funcionó.

Respuesta

44

puede encontrar cuántos elementos fueron comparados usando:

$('selector').length 

Para comprobar si hay elementos fueron agrupados, utilice:

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

Sí, esta es la forma correcta. Sin embargo, para responder la pregunta, devuelve un objeto/matriz de elementos DOM que coinciden. Y la propiedad 'longitud' se puede usar en cualquier objeto javascript (matriz, cadena, etc.) para determinar su longitud (elementos num, num caracteres, etc ...). – KyleFarris

+2

simplemente use if (item.length) – redsquare

5

Objeto jQuery que no contiene nodos DOM.

Usted debe ser capaz de utilizar

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

para su verificación existencia.

1

un alias del atributo de longitud es el método size() . Así que, básicamente, también se puede consultar:

$ ("selector") size()

para ver cuántos elementos están apareadas..

7

Mientras que $('selector').length es ideal para descubrir cuántos objetos coincide su selector, es realmente completamente innecesario. Lo que pasa con jQuery es que todas las funciones basadas en el selector usan la longitud internamente, por lo que puede hacer $(selector).hide() (o lo que sea) y no toma ninguna acción para un conjunto vacío.

+0

Eso suele ser correcto, pero de vez en cuando solo necesita verificar la existencia de un elemento. Buen punto, así que +1 de todos modos, ya que es correcto para la mayoría de los casos. –

Cuestiones relacionadas