2009-06-22 8 views
23

lo general en JavaScript que hacer algo como lo siguiente para verificar un elemento que sí existe:¿Cómo verificar que exista un elemento en el DOM usando jQuery?

if (document.getElementById('lblUpdateStatus')) { 
    $("#lblUpdateStatus").text(""); 
} 

Pero, usando jQuery - ¿cómo puedo hacer el mismo tipo de cosas?

+0

Dupe: http://stackoverflow.com/questions/950563/how-to-find-detect-any-textarea-in-page-using-jquery/950574#950574 – karim79

Respuesta

17

El método get devuelve los elementos DOM encontrados:

if($("#lblUpdateStatus").get(0)){ 
    $("#lblUpdateStatus").click(function() { ... }); 
} 

pero no estoy seguro si es un método rápido.

16

La cosa es que el jQuery sólo lo hará la acción solicitada si el elemento existe :-), lo que sólo necesita:

$("#lblUpdateStatus").text(""); 
28

$ devuelve una matriz de elementos de juego, a fin de comprobar la propiedad length y ya está bueno para ir

if ($('#lblUpdateStatus').length) { 
    $("#lblUpdateStatus").text(""); 
} 
11

No veo ninguna razón para usar jQuery solo por el mero hecho de hacerlo. el $('#lblUpdateStatus') irá directamente al document.getElementById('lblUpdateStatus'), ya que el selector tiene un anclaje, por lo que realmente no está ganando nada. Además, solo por verificar si el objeto DOM existe, envolverlo en un objeto jQuery generará bastante sobrecarga.

Por otro lado, si tan solo cambiar la propiedad de texto del objeto es lo que desea hacer, no necesita verificar su existencia si usa jQuery.

if (document.getElementById('lblUpdateStatus')) { 
    $("#lblUpdateStatus").text(""); 
} 

va a hacer exactamente lo mismo que tener sólo

$("#lblUpdateStatus").text(""); 
+0

document.getElementById ('lblUpdateStatus ') lee mejor también. – Kieran

+1

es mucho más rápido como usted dice http://jsperf.com/test-dom-selector – Kieran

+1

@Kieran: 'document.getElementById ('lblUpdateStatus')' podría ser más fácil de leer (no lo creo, pero yo Supongo que es una cuestión de hábito), pero corre el riesgo de encontrar errores de referencia nulos si intenta hacer algo con lo que devuelve esa declaración, y no hay tal elemento en la página. El método jQuery en ese caso simplemente no hará nada en silencio (que podría o no ser lo que el OP pretendía ...) –

3

escribí un post acerca de que en my blog

if ($('#element_id').length > 0) 
    console.log('the element with element_id exists in the DOM'); 
+0

Que es lo mismo que if ($ ('# element_id'). Length) {console.log ('el elemento con element_id existe en el DOM'); } (En esencia, la respuesta de DanF anterior). – Nosredna

3

Si cadena HTML se puede pasar en $(), puede utilizar parent.length:

$('<div>').length // 1, but it not exist on page 

pero

$('<div>').parent().length // 0 
9

De jQuery 1.4 en adelante se puede utilizar $.contains().

var test = $("<div>"); 
$.contains(window.document, test[0]); // false 

$("body").append(test); 
$.contains(window.document, test[0]); // true 
+0

Las otras respuestas funcionan para la pregunta formulada, pero esta es la única que funciona si desea verificar si todavía existe un elemento antiguo al que usted tiene referencia en el dominio. – jstaab

Cuestiones relacionadas