2012-04-02 78 views
6

它可以通過CSS選擇器jQuery的功能,如:CSS選擇器和jQuery過濾器之間的區別?

jQuery('h1 + h2'); 

jQuery的也有一定的過濾器,例如:even:odd

jQuery('tr:even'); 

我一直在尋找某種語法規則這區分了兩者,我在想,也許jQuery過濾器總是使用:

但是,一些CSS selectors也使用:。例如:

  • :last-child
  • :root
  • :empty
  • :target

沒有人有知道,如果它是一個CSS選擇器或一個jQuery過濾器正在使用的任何智能提示?

+0

不知道任何現有的答案如何回答這個問題... – BoltClock 2012-05-23 02:15:10

+0

@BoltClock你確定你知道你在說什麼嗎? ...我很困惑... – Neal 2012-05-31 13:56:44

+0

@Neal:我和你一樣困惑。你在回答「是」什麼?你說什麼應該可以在jQuery中? – BoltClock 2012-05-31 14:00:21

回答

7

我正在尋找某種語法規則來區分這兩種語法,我在想,也許jQuery過濾器總是使用:

但是,一些CSS選擇器也使用:

沒有人有知道,如果它是一個CSS選擇器或一個jQuery過濾器正在使用的任何智能提示?

這是有關採用自己的擴展中的CSS語法選擇庫最討厭的事情之一:因爲這兩個基於匹配的過濾器和真正的僞類是被稱爲「僞選擇」的總稱混爲一談(這基本上意味着「以:開始的選擇器」),判斷「僞選擇器」是否是過濾器的唯一方法是真正簡單的選擇器是知道它的作用,如果你不熟悉選擇器通常指的是指其他人在此提到的jQuery documentation。您會注意到,大多數基於匹配的過濾器在其描述中都會有「匹配」一詞;這是一個合理的指標,即「僞選擇器」用作基於匹配的過濾器。

在jQuery中有一個名爲Basic Filters的選擇器的子類別,但名稱完全是誤導性的,而選擇器本身分類很差;不是所有的都是實際的過濾器,但其中一些功能像標準僞類一樣!至少jQuery Extensions類別有一個正確的名稱 - 因爲這些選擇器是非標準的。

我稱之爲「基於匹配的過濾器」基本上是一個選擇器,它匹配基於的整個複雜選擇器前導向該選擇器的元素。聲音混亂?那是因爲它。

事實上,爲便於參考起見,這裏要說的是作爲基於匹配的過濾器工作jQuery選擇列表:

這些選擇返回第n個元素(S)一組的比賽中,與內搭的每個元素,使的它完全基於有關信息扣除的其他標準選擇該元素由DOM或其​​他提供,而不是基於選擇器字符串的其餘部分。儘管它們經常與:first-child:last-child,:nth-child():nth-last-child()進行比較,但它們在功能方面有很大不同。在選擇使用哪個選擇器時要非常小心。

例如,下面選擇器,使用jQuery的:first

$('ul > li:first') 

相配僅一個元件:所述第一元件匹配選擇ul > li,不管有多少ulli元件有在DOM 。此選擇器符號可以寫爲方法調用,如下所示:

$('ul > li').first() 

這使得它更清晰。它不同於:first-child

$('ul > li:first-child') 

在這種:first-child將選擇每li即其父ul的第一個孩子,並且因此可以潛在地返回一個或多個li元件,而不是恰好一個與:first

另外值得一提的是:not()選擇器;儘管我不認爲它與上面的選擇器是同一種過濾器,但重要的是要記住,jQuery將它從CSS中實際提供的內容擴展而來。差異詳見this question。我想它是歸類於基本過濾器,因爲.not(),這是絕對的所有意圖和目的過濾方法,並與.filter()的對立面。

0

是的,選擇在jQuery的
存在 的選擇被稱爲next adjacent selector

你可以看到完整的選擇列表here

沒有人有知道任何智能提示,如果它是一個CSS選擇器或正在使用JQuery過濾器?

我的小費,檢查API,如果選擇存在或不...

0

jQuery選擇效用函數的思想是接受任何CSS選擇器(包括CSS3選擇器),並且除了添加一些未在CSS規範中定義的額外值(例如:odd(例如,在有效的css中是:nth-​​child(odd))和:not(selector))。強烈建議而不是不要使用jQuery特定的選擇器,除非真的需要,因爲本地css選擇器可以比自定義jQuery css更快地處理(在現代webbrowsers中)。正如gdoron已經提到的,如果您需要檢查特定的選擇器是否可用,並且您也可以在其中找到自定義選擇器,則可以在jquery documentation中看到完整列表。

+0

':odd'與':nth-​​child(odd)'不一樣 - 事實上,它根本沒有CSS等價物。有關jQuery的':not()'與CSS3的':not()'的詳細解釋,請參閱http://stackoverflow.com/questions/10711730/whats-the-difference-in-the-not-selector-between- jquery-and-css – BoltClock 2012-05-31 13:48:39

+0

我的不好,我總是使用:第n個孩子(奇數)選擇器,並忘記了第二個:從父母的角度來看,奇數不起作用。是的,至於:不是,我意識到這是爲什麼我這麼說的原因:not(selector)是一個jquery擴展(as:not(singleton selector)是css的替代品),但我不想因爲這個問題似乎沒有要求那麼深入瞭解這一點。 – 2012-06-01 11:32:35

相關問題