Javascript 检查元素是否在jQuery集中
我有一个元素和一个jQuery集。我想检查元素是否在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
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:
用于Promise,是一种实验技术.has()
或.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()
函数,你的问题可能有很多答案,选择最好的。我从别人的回答中学到了很多:)