2012-08-15 20 views
6

Voglio ottenere tutti i tasti di accesso che si trovano su un pulsante o collegamento. Ho il seguente

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

Potete vederlo qui http://jsfiddle.net/QNPZU/

ho pensato di poter avere più selettori separandoli con una virgola, ma il codice di cui sopra non funziona.

Se faccio

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

che funzionerà, ma io lo prendo ci sarà un problema di prestazioni se il DOM è enorme?

risposta

10

è possibile codificare:

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

Sei sicuro: pulsante è deprecato. Sembra essere nell'API principale – Karsten

+0

@Karsten ': button' e': radio' e molti altri selettori sono stati ritirati a partire da jQuery 1.7 e gli sviluppatori jQuery hanno rimosso improvvisamente l'avviso di deprecazione. Ora ho diverse risposte che dicono "il selettore x è deprecato" che non è più vero. Uno di questi è questa risposta. Buona chiamata Grazie. – undefined

0

Scegli questa violino aggiornamento: http://jsfiddle.net/techfoobar/QNPZU/2/

C'erano 2 problemi w con il tuo codice.

a. Per selezionare link e pulsanti, è necessario utilizzare a e button e non :a e :button

b. È possibile selezionare elementi con un attributo chiamato accesskey semplicemente usando a[accesskey]. non è necessario utilizzare a[accesskey!=""]

+0

Grazie della risposta. Cosa fa il colon in modo diverso? API – Decrypter

+0

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

+1

La notazione ': XYZ' serve per filtrare usando le proprietà di runtime come: visible,: checked ecc. Per selezionare tutti gli elementi di un determinato tag, usa semplicemente il nome del tag come specificato nel documento API (commento precedente) – techfoobar