2012-08-15 15 views
6

Ich möchte alle Zugriffstasten erhalten, die auf einer Schaltfläche oder einem Link sind. Ich habe folgendes.

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

können Sie sehen es hier http://jsfiddle.net/QNPZU/

Ich dachte, Sie durch Trennen sie mehrere Selektoren haben könnte ein Komma aber die obige Code funktioniert nicht.

Wenn ich

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

es funktionieren wird, aber ich nehme es wird es ein Performance-Problem sein, wenn das dom ist riesig?

Antwort

10

können Sie Code:

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

Sind Sie sicher: Schaltfläche ist veraltet. Es scheint in der Haupt-API – Karsten

+0

@Karsten ': button' und': radio' zu sein und einige andere Selektoren waren ab jQuery 1.7 veraltet und jQuery-Entwickler entfernten plötzlich die veraltete Benachrichtigung. Jetzt habe ich mehrere Antworten, die sagen: "Der x-Selektor ist veraltet", was nicht mehr wahr ist. Einer von ihnen ist diese Antwort. Guter Ruf. Vielen Dank. – undefined

0

prüfen diese aktualisierte Geige: http://jsfiddle.net/techfoobar/QNPZU/2/

Es waren zwei Probleme w mit Ihrem Code.

a. Zum Auswählen von Links und Schaltflächen müssen Sie a und button und nicht :a und :button

b verwenden. Sie können Elemente mit einem Attribut namens accesskey einfach mit a[accesskey] auswählen. Sie müssen nicht verwenden a[accesskey!=""]

+0

Danke die Antwort. Was macht der Doppelpunkt anders? – Decrypter

+0

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

+1

Die ': XYZ'-Notation dient zum Filtern mit Laufzeiteigenschaften wie: visible,: checked etc .. Um alle Elemente eines bestimmten Tags auszuwählen, verwenden Sie einfach der Tag-Name wie im API-Dokument angegeben (vorheriger Kommentar) – techfoobar