Sélection d’éléments dans jQuery

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

  1. Si parmi les trois, un ou deux

    sont cachés, le bouton “Hide ’em” devrait “afficher” avec “Afficher”, mais

  2. Si tous les

    sont cachés, “Hide ’em” devrait aussi être caché et

  3. Quand tous les

    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() }