2010-10-01 7 views
1

Dites ce qui suit, y a-t-il un moyen de les enchaîner ou de les simplifier d'une manière?jquery simplifier les instructions

var initialTab = $('#navigation li#red'); 
initialTab.siblings().removeClass('on').find('ul').fadeOut(1000); 
initialTab.addClass('on').find('ul').fadeIn(1000); 

Merci

+0

Pouvez-vous poster le code HTML? Et qu'est-ce qui est censé arriver quand? Que devrait-on faire/perdre en classe, fade out/in, etc? – Alec

+1

La solution de Nick Craver est techniquement correcte, mais pour mémoire, je préfère ce que vous avez fait pour la lisibilité. En nommant la variable, il est facile de voir d'un coup d'œil que vous supprimez les onglets adjacents et que vous les masquez, tout en ajoutant «on» à partir de «l'onglet initial» et en l'affichant. Ce nom fait toute la différence. – VoteyDisciple

Répondre

5

Vous pouvez la chaîne, comme ceci:

$('#red').addClass('on').find('ul').fadeIn(1000) 
    .end().siblings().removeClass('on').find('ul').fadeOut(1000); 

Un ID doit être unique, si juste #red suffira ici, et bien que .find() prend la chaîne des les <ul> descendants , .end() ramène à l'élément #red afin que nous puissions utiliser .siblings() sur cela.

+0

Excellent merci qui a travaillé un régal! – Rishi

1

Pourquoi voudriez-vous simplifier ces instructions? Ils travaillent sur différents éléments et ont des significations différentes. En l'enchaînant davantage, il serait plus difficile à la fois de comprendre et de lire.

Mais, si vous voulez vraiment:

var initialTab = $('#navigation li#red'); 
initialTab.addClass('on').find('ul').fadeIn(1000).end() 
    .siblings().removeClass('on').find('ul').fadeOut(1000);