2012-09-20 12 views
6

Jak zmienić element tabindex na podstawie tego, czy element jest widoczny (czy w widoku)? Chciałbym wykonać jedną z poniższych czynności: zresetować bieżący numer tabindex po wprowadzeniu nowej sekcji i przypisaniu nowych tabindex do elementów w tej sekcji. Lub być w stanie wyłączyć i ponownie włączyć tabindex niektórych elementów.Jak wyłączyć i ponownie włączyć tabindex ukrytych/widocznych elementów?

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> 

chcę łącza być w kolejności tabulatorów tylko jeżeli ich przekrój jest widoczny.

css:

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

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

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

żywo przykład: http://jsfiddle.net/2UF3n/5/

Odpowiedz

2

można dynamicznie dodać lub usunąć disabled="disabled" z dowolnego pola ukrytego, aby jego wartość tabindex ignorowane.

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

ale co, jeśli nie używam atrybutu "ukryty". W moim przykładzie jest to kontener z 'przepełnieniem: ukryty'. Czy mógłbyś przerobić mój przykład, żeby pokazać mi, jak można to włączyć? –

+0

Będziesz potrzebował pewnego rozróżnienia, aby wybrać ukryte elementy, w tym przypadku, ponieważ nie ma sposobu, aby odebrać linki, które nie są wyświetlane z powodu przepełnienia: ukryte; bez sprawdzania pozycji ... co, jak sądzę, jest większym bólem w tyłku niż z którym chcesz sobie poradzić. Ukryty selektor w jQuery wybierze elementy, które nie zajmują miejsca w dokumencie, ale przepełnienie: ukryte; nie osiąga tego; nadal zajmują przestrzeń, po prostu jej nie widać. Proponuję ukrywanie elementów, których nie potrzebujesz, widocznych przez CSS lub jQuery i nie używaj nadmiaru: hidden ;. –

+1

To ma wiele sensu, ale w moim prawdziwym projekcie mam dużo animacji, które polegają na 'przepełnieniu: ukrytym'. Wypróbuję kilka różnych selektorów i użyję atrybutu 'disabled', tak jak sugerowałeś. –

Powiązane problemy