检测jQuery对象是否在页面上

前端之家收集整理的这篇文章主要介绍了检测jQuery对象是否在页面上前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
给定一个jQuery对象$ j,我需要知道它是否代表页面上已经存在的东西,或者是否还没有放在页面上。例如,如果我有这个:
$j = $('#id-of-something-already-on-the-page');

要么

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

然后我在页面上有一些东西,我不需要把它放在页面上。但是,如果我只是这样做:

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

然后我需要在页面之前附加它。

问题是你如何询问$ j是否在页面上?我认识了两种工作方式:

>看看它是否有一个父项:$ j.parent()。length> 0表示它在页面上。
>看看它是否有一个有效的索引:$ j.index()> -1表示它在页面上。

如果$ j是html或可能的body,我可以看到第一个失败我很高兴忽视这两个病理病例。我不能想到第二种方法会失败的任何方式。

有没有一个标准的技术来询问jQuery对象是否在页面上?我不在乎$ j是否可见。

解决方法

就个人而言,我首先从你知道的元素在页面中下降,如< html>或< body>,并使用 .has()
if ($('html').has($j).length)
{
    // $j is in the page
}

即使对于您提到的两个病理情况,这也是可行的。检查.length而不是.size()是more idiomatic。还没有理由检查返回的值是> 0. length属性将永远是一个非负整数,因此可以检查该值的真实性。

猜你在找的jQuery相关文章