Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

142
Views
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 answers
Answer question

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 Report

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!