So habe ich die folgende Funktion. Was es tut, ist das Fokusereignis auf alle Elemente zu hören. Wenn das Element entweder in $mobileMenu
oder $menuItems
es erlaubt es sonst entfernt es den Fokus:verhindert, dass bestimmte Elemente aus dem Fokus erhält
var $body = $("body");
var $mobileMenu = $("#mobile-menu");
var $menuItems = $("#main-menu a");
$body.on("focus.spf", "*", function(e){
e.stopPropagation();
$this = $(this);
// Prevent items from recieving focus and switching view
if (!$this.is($mobileMenu) && !$this.is($menuItems)) {
$this.blur();
} else {
console.log(this);
}
})
Das Problem, das ich habe, ist, dass dies den Benutzer von der Fokussierung auf irgendetwas verhindert auch immer, wenn ein normalerweise fokussierbare Element, das jetzt nicht ist Fokussierbar geht jedem meiner weiß aufgelisteten Elemente voraus, da es versucht, sich immer wieder auf das gleiche Element zu konzentrieren.
Wer weiß, wie ich es stattdessen auf die nächste fokussierbare Element überspringen erzählen?
Vielleicht ist es die Platzierung des '' stopPropogation() '' Aussage? Ich bin etwas verwirrt von dem, was du direkt nach dem Code gesagt hast. – itdoesntwork
@itdoesntwork 'stopPropagation()' ist gut, weil wir nicht aufblasen und Ressourcen verschwenden wollen. Grundsätzlich ist der interne Registerkarte Index auf 'Unschärfe zurückgesetzt wird()', so dass jedes Mal, wenn Sie Tab es versucht, auf dem ersten tabbable Elemente zu konzentrieren, die unscharf werden und das nächste Mal, wenn Sie Tab es versuchen, es wieder zu wählen. –
e.preventDefault() könnte helfen? – Eric