2012-08-15 10 views
6

Quiero obtener todas las teclas de acceso que están en un botón o enlace. Tengo lo siguiente.

$(":button[accesskey!=''], :a[accesskey!='']").each(function(i) { 
//code 
}); 

Se puede ver aquí http://jsfiddle.net/QNPZU/

pensé que podría tener varios selectores separándolas con una coma, pero el código anterior no funciona.

Si hago

$(":*[accesskey!='']").each(function(i) { 
//code 
}); 

que va a funcionar, pero lo tomo no será un problema si el rendimiento es enorme dom?

Respuesta

10

Puede código:

$("button[accesskey], a[accesskey]").each(function(i) { 
    //code 
}); 
+0

Está seguro: el botón está en desuso. Parece estar en la api principal – Karsten

+0

@Karsten ': button' y': radio' y varios otros selectores estaban en desuso a partir de jQuery 1.7 y los desarrolladores de jQuery eliminaron repentinamente el aviso de obsolescencia. Ahora tengo varias respuestas que dicen "el selector x está en desuso", lo cual ya no es cierto. Uno de ellos es esta respuesta. Buena llamada. Gracias. – undefined

0

Marque esta violín actualización: http://jsfiddle.net/techfoobar/QNPZU/2/

Hubo 2 problemas w con tu código

a. Para la selección de enlaces y botones, es necesario utilizar a y button y no :a y :button

b. Puede seleccionar elementos con un atributo llamado accesskey simplemente usando a[accesskey]. no necesita usar a[accesskey!=""]

+0

Gracias la respuesta. ¿Qué hace el colon diferente? – Decrypter

+0

API: http://api.jquery.com/element-selector/ – techfoobar

+1

La notación ': XYZ' es para filtrar utilizando propiedades de tiempo de ejecución como: visible,: activada, etc. Para seleccionar todos los elementos de una etiqueta determinada, simplemente use el nombre de la etiqueta como se especifica en el documento API (comentario anterior) – techfoobar