2012-09-20 5 views
6

Wie kann ich die tabindex eines Elements basierend darauf ändern, ob das Element sichtbar ist (im sichtbaren Bereich)? Ich möchte eines dieser Dinge tun: Setzen Sie den aktuellen tabindex beim Eingeben eines neuen Abschnitts zurück und weisen Sie den Elementen in diesem Abschnitt neue tabindex zu. Oder in der Lage sein, tabindex bestimmter Elemente zu deaktivieren und wieder zu aktivieren.Wie Tabindex von versteckten/sichtbaren Elementen zu deaktivieren und wieder zu aktivieren?

html:

<div id="nav"> 
     <a id="firstLink" href="#section1" tabindex="1">Go to section 1</a> 
     <a id="secondLink" href="#section2" tabindex="2">Go to section 2</a> 
    </div> 
    <div id="container"> 
     <div id="section1"> 
      <a href="#" tabindex="3">Specific to section 1</a> 
     </div> 
     <div id="section2"> 
      <a href="#" tabindex="3">Specific to section 2</a> 
     </div> 
    </div> 

Ich mag die Links in der Tab-Reihenfolge sein, wenn ihr Abschnitt sichtbar ist.

css:

#container{ 
     overflow: hidden; 
     width: 400px; 
     height: 400px; 
    } 

    #section1{ 
     background: red; 
     width: 400px; 
     height: 400px; 
    } 

    #section2{ 
     background: green; 
     width: 400px; 
     height: 400px; 
    } 

anschauliches Beispiel: http://jsfiddle.net/2UF3n/5/

Antwort

2

Sie können disabled="disabled" von jedem versteckten Feld dynamisch hinzufügen oder entfernen, um seinen tabindex Wert ignoriert werden.

$("a:hidden").attr("disabled","disabled"); 
+0

aber was ist, wenn ich nicht das 'versteckte' Attribut verwende. In meinem Beispiel ist es ein Container mit 'overflow: hidden'. Könntest du mein Beispiel überarbeiten, um mir zu zeigen, wie das aussehen könnte? –

+0

Sie müssen etwas unterscheiden, um die versteckten Elemente auszuwählen. In diesem Fall gibt es keine Möglichkeit, Links aufzunehmen, die wegen Überlaufs nicht angezeigt werden: versteckt; ohne Positionschecks zu machen ... was ich denke, ist mehr ein Schmerz im Hintern, als Sie damit umgehen wollen. Mit dem: hidden-Selektor in jQuery werden Elemente ausgewählt, die keinen Platz im Dokument belegen, jedoch überlaufen: hidden; erreicht das nicht; sie nehmen immer noch Platz ein, du kannst es einfach nicht sehen. Ich würde vorschlagen, die Elemente, die Sie nicht benötigen sichtbar über CSS oder jQuery und nicht Überlauf: versteckt ;. –

+1

Das macht viel Sinn, aber in meinem eigentlichen Projekt habe ich eine Menge Animationen, die auf "overflow: hidden" beruhen. Ich werde verschiedene Selektoren ausprobieren und das Attribut 'disabled' verwenden, wie Sie es vorgeschlagen haben. –

Verwandte Themen