Aquí tengo un selector de CSS-basado en bobince 's answer para seleccionar cualquier elemento HTML enfocable:
a[href]:not([tabindex='-1']),
area[href]:not([tabindex='-1']),
input:not([disabled]):not([tabindex='-1']),
select:not([disabled]):not([tabindex='-1']),
textarea:not([disabled]):not([tabindex='-1']),
button:not([disabled]):not([tabindex='-1']),
iframe:not([tabindex='-1']),
[tabindex]:not([tabindex='-1']),
[contentEditable=true]:not([tabindex='-1'])
{
/* your CSS for focusable elements goes here */
}
o un poco más bonito en SASS:
a[href],
area[href],
input:not([disabled]),
select:not([disabled]),
textarea:not([disabled]),
button:not([disabled]),
iframe,
[tabindex],
[contentEditable=true]
{
&:not([tabindex='-1'])
{
/* your SCSS for focusable elements goes here */
}
}
He añadido como una respuesta, porque eso era lo que estaba buscando, cuando Google me redirigió a esta pregunta de Stackoverflow.
EDIT: Hay un selector más, que es enfocable:
[contentEditable=true]
Sin embargo, esto se utiliza muy raramente.
Cualquier idea cómo obtener todo esto con jQuery? Véase también http://stackoverflow.com/questions/7668525/is-there-a-jquery-selector-to-get-all-elements-that-can-get-focus – ripper234
Encontré algunos resultados interesantes: http: // jsfiddle.net/B7gn6/ me sugiere que attrib "tabindex" no es suficiente para trabajar en Chrome al menos. –
@jon: esos elementos tabindex realmente aceptan foco, si intentas hacer clic en ellos. Probar '.is (': focus')' no es confiable - jQuery implementa su propia prueba para ': focus' en Chrome, que es lo que realmente está probando aquí. Ese código jQuery no es confiable/funciona mal ('~ tabIndex' ...?! Eso no va a funcionar ...) – bobince