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:Detecta si un objeto jQuery está en la página o no
$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 que no es necesario ponerlo en la página. Pero, si acabo de tener esto:
$j = $("<p>I'll cook you some eggs, Margie.</p>");
Entonces tendría que anexarlo antes de que esté en la página.
La pregunta es ¿cómo se pregunta $j
si está en la página o no? Sé de dos maneras que el trabajo es lo suficientemente bueno:
- Ver si tiene un padre:
$j.parent().length > 0
implica que está en la página. - Vea si tiene un índice válido:
$j.index() > -1
implica que está en la página.
puedo ver la primera fallando si $j
es el html
o posiblemente body
; Estoy feliz de ignorar esos dos casos patológicos. No se me ocurre ninguna forma de que el segundo enfoque fracase.
¿Existe una técnica estándar para preguntar si un objeto jQuery está en la página o no? No me importa si $j
es visible.
$ j podría tener un padre y no estar en el documento que se sabe ... – jcolebrand
otra posible prueba:. '$ J.closest ('cuerpo') size()> 0' –
@drachenstern: Buen punto . La mejor parte de hacer una pregunta es hacer que alguien señale los problemas obvios. El mismo problema, presumiblemente, también se aplicaría al enfoque de índice ya que están verificando cosas similares. –