2016-09-12 78 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 *的所有元素[”]。在关于组合表达式或将其用作变量的问题中,没有任何**。很高兴你得到了你需要的东西,但是请在将来的问题中包括你所有的要求。 –