2016-07-27 198 views
4

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

if ($someUL.find("> li > a").contains(myElement)) { 
    ... 
} 

这里,contains方法不存在,我用它来证明我的目标。我知道几种类似的方法,如has,is,$.contains,但它们都有不同的含义。

+1

'如果($ someUL.find( “> li>系统”)。过滤器(myElement)。长度)'???现在我不确定你确切的预期行为是什么?那么只需使用:'$ someUL.find(myElement).length'?因为根据你的用例和相关的HTML标记,这可能就足够了。现在确定你最好提供一个有问题的MCVE –

+0

@ A.Wolff谢谢你,是的,你的建议也可以,但是我更喜欢使用'index'。 –

+1

它不适合你:'myElement.is($ someUL.find(“> li> a”))'? –

回答

2

您可以在这里使用.index()方法。如果一套没有找到元素,.index()返回-1通过阅读jQuery API

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

谢谢你为了快速回答,对于这个问题比使用'过滤器'IMO更好。而且,就性能而言,这应该稍微高效。 –

+0

@ZoltánTamási:很高兴帮助:),不要忘记接受答案。 –

2

你可以有你的答案。

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

根据所述API:

  • .has()在无极被使用并且是实验技术
  • .contain()$.contain()判定后代
  • .is()可用于决定选择,元件或选择即使功能。

所以,你应该使用.is()这里是API

+0

谢谢你的总结,我不知道'是'可以接受另一个jQuery对象来检查遏制。然而,对于这个简单的任务,当我有一个精确的DOM元素时,使用'index'是更好的方法IMO。但你绝对是上帝,我的赞成。 –

+0

另外,请原谅我,我没有免费的一周阅读jQuery API :) –

+0

在你的问题之前,我从来没有使用'.has()'。在你的问题之后,我了解了'.has()'函数,可能有很多你的问题的答案,选择最好的。我从别人的回答中学到很多东西:) – TomIsion

相关问题