2012-09-20 19 views
6

¿Cómo puedo cambiar el tabindex de un elemento en función de si el elemento está visible o no (en el área visible)? Me gustaría hacer una de estas cosas: restablecer el actual tabindex al ingresar una nueva sección y asignar nuevos tabindex a los elementos en esa sección. O puede deshabilitar y volver a habilitar tabindex de ciertos elementos.Cómo deshabilitar y volver a habilitar tabindex de elementos ocultos/visibles?

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> 

Quiero que los enlaces a estar en el orden de tabulación sólo si su sección es visible.

css:

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

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

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

ejemplo vivo: http://jsfiddle.net/2UF3n/5/

Respuesta

2

Usted puede agregar o quitar disabled="disabled" de cualquier campo oculto para hacer caso omiso de su valor tabindex dinámicamente.

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

pero qué ocurre si no estoy usando el atributo 'hidden'. En mi ejemplo, es un contenedor con 'overflow: hidden'. ¿Podrían volver a trabajar mi ejemplo para mostrarme cómo se podría incorporar? –

+0

Necesitará alguna distinción para seleccionar los elementos ocultos, en ese caso porque no hay forma de retomar los enlaces que no se muestran debido al desbordamiento: ocultos; sin hacer controles de posición ... lo cual creo que es más un dolor en el trasero de lo que quieres tratar. El: selector oculto en jQuery seleccionará elementos que no ocupan espacio en el documento, pero desbordamiento: oculto; no logra eso; todavía ocupan espacio, simplemente no puedes verlo. Sugeriría ocultar los elementos que no necesita visibles a través de CSS o jQuery y no usar desbordamiento: oculto ;. –

+1

Eso tiene mucho sentido, pero en mi proyecto real tengo una gran cantidad de animaciones que se basan en 'overflow: hidden'. Probaré diferentes selectores y usaré el atributo 'disabled' como sugirió. –

Cuestiones relacionadas