2016-07-27 258 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

相關問題