2010-05-20 22 views
102

estoy usando selectores de jQuery, especialmente selector de ID:La determinación de si jQuery no ha encontrado ningún elemento

$("#elementId")... 

¿Cómo debería determinar si jQuery ha encontrado el elemento o no? incluso si el elemento con el id especificado no existe la siguiente afirmación me dan: [object Object]

alert($("#idThatDoesnotexist")); 

Respuesta

159

$('#idThatDoesnotexist').length es lo que estás buscando. (Si no encuentra nada, esto será === 0.) Así que su sentencia condicional probablemente debería ser:

if($('#id').length) { /* code if found */ } else { /* code if not found */ }

que está obteniendo un objeto que regresó de alerta porque jQuery (casi) siempre devuelve el "objeto jQuery" cuando úsalo, que es un envoltorio para los elementos encontrados de jQuery que permite el encadenamiento de métodos.

+3

No necesita el cero, $ ('# id'). La longitud es suficiente (cero == falso en javascript) – David

+10

@David el hecho de que no _Necesita_ no necesariamente lo hace redundante, a primera vista IMO lo hace más claro. – Abir

+1

@Abir: solo lo hace más claro hasta que está acostumbrado a la sintaxis sin él, probando la veracidad en lugar de explícitamente 0. Sugiero simplemente acostumbrarse a la sintaxis sin el '== 0', lo verá en todos lados. –

23

Futuraprime es correcto, pero se puede acortar su sintaxis de la siguiente manera:

if ($("#id").length) { 
    //at least one element was found 
} else { 
    //no elements found 
} 
8
!$.isEmptyObject($.find('#id')) 

Esto devolverá verdadero si el elemento existe y falso si no lo hace.

5
$('#my_selector').length > 0 
$('#my_selector').get(0) !== undefined 
$('#my_selector')[0] !== undefined 

Esto es básico, ahora haga lo que quiera.

Cuestiones relacionadas