2016-09-12 114 views
0

我想選擇tabindex大於-1(可聚焦元素)的所有元素。到目前爲止,這是我想出了:「tabindex> 0」元素的CSS選擇器

$element.find('[tabindex]:not([tabindex < \'0\'])'); 

它不工作,而是拋出一個錯誤:

Error: Syntax error, unrecognized expression: [tabindex < '0'] 
    at Function.Sizzle.error (vendor.js:1463) 
... 

然而,這工作,但itdoes沒有覆蓋情況的tabindex < -1。

$element.find('[tabindex]:not([tabindex=\'-1\'])'); 

回答

5

Selectors doesn't provide attribute selectors with numeric comparisons,jQuery也沒有。

在這種特定的情況下,我想你可以只排除了tabindex屬性的元素與-符號開始(除了排除元素爲0的tabindex屬性):

$element.find('[tabindex]:not([tabindex="0"]):not([tabindex^="-"])'); 
+1

更妙的是 「未開始」,或':不([^ tabindex屬性= 「 - 」])' –

+0

@Niet黑暗ABSOL:我忘了,謝謝。 – BoltClock

2

可以使用filter爲這樣的:

$("[tabindex]").filter(function() { 
    return parseInt($(this).attr("tabindex"), 10) >= 0; 
}) 
+0

是的,但在我的情況下,我想有一個像這樣的選擇器表達式,所以後面我可以把它和其他表達式一起放入一個常量中,例如('[contentEditable = true]','a [href]','input:not [禁用])等) –

+2

問題陳述:「*我試圖選擇[tab]超過-1 *的所有元素[」]。在關於組合表達式或將其用作變量的問題中,沒有任何**。很高興你得到了你需要的東西,但是請在將來的問題中包括你所有的要求。 –