我想從簡化我的選擇:jQuery是否有類似於:any或:matches僞類的內容?
'#a #b a[href^=mailto], .c .d a[href^=mailto]'
要:
':matches(#a #b, .c .d) a[href^=mailto]'
這可能只是使用jQuery選擇?或者我必須這樣做:
$('#a #b, .c .d').find('a[href^=mailto]')
哪個不靈活。
我想從簡化我的選擇:jQuery是否有類似於:any或:matches僞類的內容?
'#a #b a[href^=mailto], .c .d a[href^=mailto]'
要:
':matches(#a #b, .c .d) a[href^=mailto]'
這可能只是使用jQuery選擇?或者我必須這樣做:
$('#a #b, .c .d').find('a[href^=mailto]')
哪個不靈活。
目前沒有像你在jQuery中提到的選擇器。
看起來像你的最後選擇的是最簡單的方式已經,如果有什麼可以做的不僅僅是縮短:如果您需要#b
爲#a
後代
$('#b, .c .d').find('a[href^=mailto]')
,那麼有沒有辦法縮短您的選擇IMO
如果他只希望'#b'如果它是'#a'的後代呢? –
我在說'$('#a #b')'(給我的#a *的後裔,id爲b),與'('#b')'不一樣給我#b)。 –
@JeromyFrench然後有最短的方式已經 – Felix
,如果你正在尋找所有a[href^=mailto]
,然後
$('a[href^=mailto]')....
和
$('* a[href^=mailto]')....
,或者如果他們有一個 「通用」 選擇/父母
$('selector * a[href^=mailto]')....
否則:
$('#a #b, .c .d').find('a[href^=mailto]')
,你在你的問題
jQuery的寫不提供選擇相當於:any()
/:matches()
(其中:any()
的是原來的形式和it was first implemented internally in Gecko and WebKit)。如果您無法或不願意展開您的選擇器,您確實必須拆分選擇器字符串並進行單獨的方法調用。
哪種方法()你使用取決於確切位置在哪裏:matches()
將出現在您的選擇:
如果:matches()
自動出現在選擇字符串的開頭,任意組合程序之前,如問題:
':matches(#a #b, .c .d) a[href^=mailto]'
替代$()
其中:matches()
出現,並且選擇器的其餘部分傳遞給.find()
,.children()
,.next()
或.nextAll()
,具體取決於:matches()
(子代,子代,+
或~
)之後的組合子。
從提問轉載:
$('#a #b, .c .d').find('a[href^=mailto]')
如果:matches()
出現本身就是一個組合子之後,例如:
$('#a #b').children('.c, .d')
: '#a #b > :matches(.c, .d)'
替代的其中:matches()
出現上述方法之一
如果:matches()
表現爲另一種化合物選擇的部分,例如:
':matches(#a #b, .c .d) a[href^=mailto]:matches(.e, .f)'
替代.filter()
如該:matches()
出現:
$('#a #b, .c .d').find('a[href^=mailto]').filter('.e, .f')
出了什麼問題'.find()'? –
爲什麼你認爲僞類應該在jQuery中,如果它們不在CSS規範中?你爲什麼不看看jQuery文檔? http://api.jquery.com/category/selectors/ – Serg
.find不允許使用其他選擇器(您可以通過'child'直接執行子操作,或者使用'find'執行子代操作)。並且jQuery中有一整類選擇器不在css中:http://api.jquery.com/category/selectors/jquery-selector-extensions/ – theazureshadow