检测页面上是否有jQuery对象

2021/01/31 05:51 · jquery ·  · 0评论

给定一个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页面上是否存在?我知道两种方法可以很好地完成工作:

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

我可以看到第一个失败的原因$jhtmlbody我很乐意忽略这两个病理情况。我无法想到第二种方法会失败。

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

就个人而言,我会从你知道一个元素开始下降在页面,如<html><body>和使用.has()

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

即使您提到的两个病理案例也可以使用。这是更地道检查.length,而不是.size()也没有理由检查返回的值是> 0length属性将始终是一个非负整数,因此足以检查该值的真实性。

我可能只是检查一下该元素是否可以到达body元素:

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

正如您在其他评论中所指出的那样,在某些特殊情况下,当您处理多余的身体元素时,这将失败。如果您真的想发现这些情况,我想您可以检查一下是否有多个$(body)元素,但是我怀疑这种极端情况很快就会失控。

这种“可能是附着到页面上”的检查也可以转到真正的jQuery选择器中

$.expr[':'].isProbablyAttached = function(obj){

    return $(obj).closest('body').size()>0;
};

// Usage:
$('.someClasses:isProbablyAttached').doSomething();

使用jQuery(至少在1.7.1版中)会$('html').parent()返回一个非空数组([#document]):

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

所以'mu太短的注释不是问题:

如果$ j是html或可能是body,我可以看到第一个失败;我很乐意忽略这两个病理情况。我无法想到第二种方法会失败。

jQuery对象代表html元素的集合。

选择之后:$ j = $('#id-of-something-on-of-on-the-page');

您所要做的就是检查$ j.length。如果为1,则页面上只有一项。

本文地址:http://jquery.askforanswer.com/jianceyemianshangshifouyoujqueryduixiang.html
文章标签: ,  
版权声明:本文为原创文章,版权归 admin 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!