Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

128
Vistas
Detectar si un objeto jQuery está en la página o no

Dado un objeto jQuery, $j , necesito saber si representa algo que ya está en la página o si es algo que aún no se ha puesto en la página. Por ejemplo, si tengo esto:

 $j = $('#id-of-something-already-on-the-page');

o

 $j = $('<p>Where is pancake house?</p>').appendTo($('#this-is-already-there'));

Entonces tengo algo en la página y no necesito ponerlo en la página. Pero, si solo tengo esto:

 $j = $("<p>I'll cook you some eggs, Margie.</p>");

Entonces necesitaría agregarlo antes de que esté en la página.

La pregunta es ¿cómo le preguntas a $j si está en la página o no? Conozco dos formas de trabajar lo suficientemente bien:

  1. Vea si tiene un padre: $j.parent().length > 0 implica que está en la página.
  2. Vea si tiene un índice válido: $j.index() > -1 implica que está en la página.

Puedo ver que el primero falla si $j es el html o posiblemente body ; Estoy feliz de ignorar esos dos casos patológicos. No puedo pensar en ninguna forma en que el segundo enfoque falle.

¿Existe una técnica estándar para preguntar si un objeto jQuery está en la página o no? No me importa si $j está visible.

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Personalmente, comenzaría descendiendo desde un elemento que sabes que está en la página, como <html> o <body> , y usaría .has() :

 if ($('html').has($j).length) { // $j is in the page }

Esto funciona incluso para los dos casos patológicos que mencionaste. Es más idiomático verificar .length en lugar de .size() . Tampoco hay motivo para verificar que el valor devuelto sea > 0 . La propiedad length siempre será un número entero no negativo, por lo que basta con comprobar la veracidad del valor.

over 4 years ago · Santiago Trujillo Denunciar

0

Probablemente solo verifique si el elemento puede alcanzar el elemento del cuerpo:

 $j.closest('body').size()>0

Como notó en otros comentarios, esto fallaría en algunos casos excepcionales en los que está manejando elementos de cuerpo adicionales. Si realmente desea detectar esas situaciones, supongo que podría comprobar si tiene varios elementos $( body ), pero sospecho que estos casos extremos se saldrán de control con bastante rapidez.

Esta verificación "probablemente está adjunta a la página" también podría convertirse en un selector jQuery de buena fe :

 $.expr[':'].isProbablyAttached = function(obj){ return $(obj).closest('body').size()>0; }; // Usage: $('.someClasses:isProbablyAttached').doSomething();
over 4 years ago · Santiago Trujillo Denunciar

0

Con jQuery (al menos con la versión 1.7.1) $('html').parent() devuelve una matriz no vacía ( [#document] ):

 $j = $("<p>I'll cook you some eggs, Margie.</p>"); $j.parent().length === 0 $('html').parent().length === 1 $('body').parent().length === 1

Entonces, la nota 'mu is too short' no es un problema:

Puedo ver que el primero falla si $j es el html o posiblemente el cuerpo; Estoy feliz de ignorar esos dos casos patológicos. No puedo pensar en ninguna forma en que el segundo enfoque falle.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda