Javascript 检查元素是否在jQuery集中

Javascript 检查元素是否在jQuery集中,javascript,jquery,Javascript,Jquery,我有一个元素和一个jQuery集。我想检查元素是否在jQuery集中。我需要这样的条件 if ($someUL.find("> li > a").contains(myElement)) { ... } 这里,contains方法不存在,我用它来演示我的目标。我知道有几种类似的方法,如has,is,$.contains,但它们都有不同的含义。您可以在这里使用.index()方法。如果在集合中找不到元素,.index()将返回-1: if($someUL.find("> l

我有一个元素和一个jQuery集。我想检查元素是否在jQuery集中。我需要这样的条件

if ($someUL.find("> li > a").contains(myElement)) {
  ...
}
这里,
contains
方法不存在,我用它来演示我的目标。我知道有几种类似的方法,如
has
is
$.contains
,但它们都有不同的含义。

您可以在这里使用
.index()
方法。如果在集合中找不到元素,
.index()
将返回-1:

if($someUL.find("> li > a").index(myElement) > -1){
   //myelement exists in set $someUL.find("> li > a")
}

你可以通过阅读答案

我认为您的目标是检查元素是否与选择器匹配。答案是使用
.is()

根据API:

  • .has()
    用于Promise,是一种实验技术
  • .contain()
    $。contain()
    被判定为后代
  • .is()
    可用于决定选择器、元素或选择,即使功能正常

因此,您应该使用
.is()
这里是
if($someUL.find(“>li>a”).filter(myElement.length)
???现在我不确定你的确切预期行为是什么?!那么使用:
$someUL.find(myElement.length)呢?因为这取决于您的用例和相关的HTML标记,这就足够了。现在你最好提供一个有问题的MCVEitself@A.Wolff谢谢你,是的,你的建议也很有效,但是我更喜欢使用
index
来实现这一点。它对你不起作用:
myElement.is($someUL.find(“>li>a”)
?嗯,我不知道
is
可以接受另一个jQuery对象作为参数。这看起来也不错,不过,我也应该将
myElement
包装成jQuery。是的,我不知道什么是
myElement
谢谢你的快速回答,这比使用
filter
IMO更适合这个问题。而且,就性能而言,这应该稍微更有效。@ZoltánTamási:很高兴它有帮助:),别忘了接受答案。谢谢你的总结,我不知道
is
可以接受另一个jQuery对象来检查包容。然而,对于这个简单的任务,当我有一个确切的DOM元素时,使用
索引
是更好的方法。但是你绝对相信我的话。另外,请原谅我没有一周的时间阅读jQuery API:)在你提问之前,我从来没有使用
.has()
。问完你的问题后,我了解了
.has()
函数,你的问题可能有很多答案,选择最好的。我从别人的回答中学到了很多:)