2010-03-20 6 views
4

J'ai une déclaration jQuery qui fonctionne bien. Comment pourrais-je le réécrire en .live?jquery en direct tabIndex

$(document).ready(function() 
{ 

    $(':input:enabled:visible, a:enabled:visible, span.ValidatorClass').each 
    (function(i, e) { $(e).attr('tabindex', i) }); 


    }); 

La raison pour laquelle je en ai besoin est je masquer/afficher des éléments parfois en utilisant .show et .hide et quand cela arrive, je dois rétablir l'ordre de tabulation pour les éléments qui apparaissent/disparaissent.

+0

si vous ne montrer et cacher les éléments que vous pouvez définir l'index de tabulation de toute façon - il sera ignoré des éléments cachés, de sorte que la valeur de '$ (document) .ready' devrait être correct. Qu'est-ce qui ne fonctionne pas pour toi alors? – Kobi

+0

Si je ne .show nouvellement apparus éléments ne sont pas index de tabulation défini car ils ne sont pas visibles lorsque cette page chargée, donc ils sont sautées quand tabulant. – Victor

+2

Eh bien, bien sûr, parce que vous êtes la sélection ': visible'. Que faire si vous avez sélectionné ': input, a, span.ValidatorClass'? (En passant, peut un '' des index de tabulation?) – Kobi

Répondre

1

Affichage et éléments cacher soulève pas d'événement pour autant que je sache, donc live ne vous aidera pas ici.

Cependant, puisque vous ne pas ajouter de nouveaux éléments, ni les réordonner, vous pouvez définir la tabindex correcte dès le début. Le navigateur va ignorer les éléments cachés ou désactivés de toute façon. Exécutez votre code sans les filtres :visible et enabled:

$(':input, a, span.ValidatorClass') 
.each(function(i, e) { $(e).attr('tabindex', i) }); 
+0

Merci pour l'aide – Victor