Dans la suite de la question sur ce lien, je voulais append quelques fonctionnalités à test.html
Le déclencheur d’événement consiste à “cliquer” sur n’importe quelle balise
. Après avoir cliqué, je voulais que ce
particulier disparaisse (ce qui était assez simple), mais je veux aussi que
sont cachés, le bouton “Hide ’em” devrait “afficher” avec “Afficher”, mais
sont cachés, “Hide ’em” devrait aussi être caché et
sont visibles, “Show ’em” devrait être caché.
J’ai essayé d’y aller avec mes connaissances des sélecteurs jQuery et de la documentation sur les sélecteurs, mais je n’y suis pas parvenu. C’est ce que j’ai fait jusqu’à maintenant.
$('p.*').live('click', function() { $(this).hide('slow'); if( $('p').is(':hidden') ) { $('.shower').show(); } if( $('p.*').is(':hidden') ) { $('.hider').show(); } });
Cependant, ce code ne bascule pas de manière sélective dans les conditions extrêmes de tous les
masqués
Voici un moyen de le faire
var all_ps = $('p.*').length; var hidden_ps = 0; $('p.*').live('click', function() { $(this).hide('slow'); hidden_ps++; updateButtons(); }); function updateButtons() { $('.hider').show(); $('.shower').show(); if(hidden_ps == all_ps-1) { $('.hider').hide(); } else if(hidden_ps == 0) { $('.shower').hide(); } } function resetButtons() { $('p.*').show(); hidden_ps = 0; updateButtons() }