variable validar vacio vacia una saber quitar objeto esta comprobar como javascript jquery dom object null

javascript - validar - Cómo verificar objetos nulos en jQuery



validar undefined jquery (13)

¡La propiedad de longitud de llamada en undefined o un objeto nulo causará que los navegadores IE y webkit fallen!

En cambio, intente esto:

if($("#something") !== null){ // do something }

o

if($("#something") === null){ // don''t do something }

Estoy usando jQuery y quiero verificar la existencia de un elemento en mi página. He escrito el siguiente código, pero no está funcionando:

if($("#btext" + i) != null) { //alert($("#btext" + i).text()); $("#btext" + i).text("Branch " + i); }

¿Cómo compruebo la existencia del elemento?


¿Qué pasa con el uso de "indefinido"?

if (value != undefined){ // do stuff }


(Dado que no tengo suficiente reputación para votar por la respuesta ...)

Wolf escribió:

¡La propiedad de longitud de llamada en undefined o un objeto nulo causará que los navegadores IE y webkit fallen!

En cambio, intente esto:

// NOTE!! THE FOLLOWING IS WRONG; DO NOT USE! -- EleotleCram if($("#something") !== null){ // do something }

o

// NOTE!! THE FOLLOWING IS WRONG; DO NOT USE! -- EleotleCram if($("#something") === null){ // don''t do something }

Si bien es cierto que al invocar la propiedad length en un objeto indefinido o nulo, los navegadores fallarán, el resultado de los selectores de jQuery ($ (''...'')) nunca será nulo ni indefinido. Por lo tanto, las sugerencias del código no tienen sentido. Use una de las otras respuestas, tienen más sentido.

(Actualización 2012) Porque la gente mira el código y esta respuesta está muy arriba en la lista: durante los últimos años, he estado usando este pequeño complemento:

jQuery.fn[''any''] = function() { return (this.length > 0); };

Creo que $ (''div''). Any () tiene una lectura mejor que $ (''div''). Length , además no sufrirás tanto por los errores tipográficos: $ (''div''). Ayn () dará un error de tiempo de ejecución , $ (''div''). lenght silenciosamente siempre será falso.

__
Edits noviembre de 2012:

1) Debido a que la gente tiende a mirar el código y no leer lo que se dice alrededor del código, agregué dos notas de advertencia de gran advertencia al código de Wolf citado.
2) Agregué el código del pequeño complemento que uso para esta situación.


Consulte las preguntas frecuentes de jQuery ...

Puede usar la propiedad de longitud de la colección jQuery devuelta por su selector:

if ( $(''#myDiv'').length ){}


En jQuery 1.4 obtienes la función $ .isEmptyObject, pero si te fuerzan a usar una versión anterior de jQ como nosotros, los desarrolladores de Drupal pobres roban usar este código:

// This is a function similar to the jQuery 1.4 $.isEmptyObject. function isObjectEmpty(obj) { for ( var name in obj ) { return false; } return true; }

Úselo como:

console.log(isObjectEmpty(the_object)); // Returns true or false.


La función de búsqueda devuelve una matriz de elementos coincidentes. Usted podría verificar si la longitud es cero. Tenga en cuenta el cambio para buscar solo los elementos una vez y reutilizar los resultados según sea necesario.

var elem = $("#btext" + i); if (elem.length != 0) { elem.text("Branch " + i); }

Además, ¿ha intentado simplemente usar la función de texto? Si no existe ningún elemento, no hará nada.

$("#btext" + i).text("Branch " + i);


La función jquery $ () siempre devuelve un valor no nulo: los elementos medios coinciden con el selector cretario. Si no se encontró el elemento, devolverá una matriz vacía. Entonces su código se verá algo como esto:

if ($("#btext" + i).length){ //alert($("#btext" + i).text()); $("#btext" + i).text("Branch " + i); }


Usando la propiedad de longitud puede hacer esto.

jQuery.fn.exists = function(){return ($(this).length < 0);} if ($(selector).exists()) { //do somthing }


cuando el objeto está vacío devuelve este error:
Unkeught TypeError: no se puede leer la propiedad ''0'' de null
Intento este código
try{ if ($("#btext" + i).length) {};
} catch(err){ if ($("#btext" + i).length) { //working this code if item not NULL }; }


no importa cuál sea tu selección, la función $() siempre devuelve un objeto jQuery para que no se pueda usar para probar. La mejor forma (si no la única) es usar la función size() o la propiedad de longitud nativa como se explicó anteriormente.

if ( $(''selector'').size() ) {...}


use $("#selector").get(0) para verificar con nulo así. get devuelve el elemento dom, hasta entonces estás tratando con una matriz, donde tienes que verificar la propiedad length. Personalmente, no me gusta el control de longitud para un manejo nulo, me confunde por alguna razón :)


if ( $(''#whatever'')[0] ) {...}

El objeto jQuery que devuelve todos los métodos jQuery nativos NO es una matriz, es un objeto con muchas propiedades; uno de ellos es una propiedad de "longitud". También puede verificar el tamaño () o obtener (0) o obtener () - ''obtener (0)'' funciona igual que acceder al primer elemento, es decir, $ (elem) [0]


if (typeof($("#btext" + i)) == ''object''){ $("#btext" + i).text("Branch " + i); }