我正在尋找某種語法規則來區分這兩種語法,我在想,也許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
,不管有多少ul
和li
元件有在DOM 。此選擇器符號可以寫爲方法調用,如下所示:
$('ul > li').first()
這使得它更清晰。它不同於:first-child
:
$('ul > li:first-child')
在這種:first-child
將選擇每li
即其父ul
的第一個孩子,並且因此可以潛在地返回一個或多個li
元件,而不是恰好一個與:first
。
另外值得一提的是:not()
選擇器;儘管我不認爲它與上面的選擇器是同一種過濾器,但重要的是要記住,jQuery將它從CSS中實際提供的內容擴展而來。差異詳見this question。我想它是歸類於基本過濾器,因爲.not()
,這是絕對的所有意圖和目的過濾方法,並與.filter()
的對立面。
不知道任何現有的答案如何回答這個問題... – BoltClock 2012-05-23 02:15:10
@BoltClock你確定你知道你在說什麼嗎? ...我很困惑... – Neal 2012-05-31 13:56:44
@Neal:我和你一樣困惑。你在回答「是」什麼?你說什麼應該可以在jQuery中? – BoltClock 2012-05-31 14:00:21