jquery: afficher/masquer basé sur la variable pour le nom de la classe

Je suis assez nouveau à jQuery et ont besoin de l'aide avec le filtrage des classes. L'utilisateur peut choisir de neuf boutons pour sélectionner les types d'événements à afficher/masquer. Cliquez sur une couleur et que les événements avec cette couleur, et le reste sont cachés. Cliquez sur "tous" et tous les événements montrent aucun cachés. Tous les événements de commencer avec des display:block.

Exemple des boutons de contrôle:

<li class="all" id="all-events"><a href="#" onclick="showEvents('event-all')">
<img src="swatch-all.png" alt="" /></a></li>

<li class="red" id="red-events"><a href="#" onclick="showEvents('event-red')">
<img src="swatch-red.png" alt="" /></a></li>

<li class="blue" id="blue-events"><a href="#" onclick="showEvents('event-blue')">
<img src="swatch-blue.png" alt="" /></a></li>

Les événements sont tirés à partir d'une base de données en php et ressembler à cet exemple:

<div id="bigCal">
    <p class="all"><a href="http://foo.com" title="All event">All events</a></p>
    <p class="blue"><a href="http://bar.com" title="Blue event">Blue event</a></p>
    <p class="red"><a href="http://foobar.com" title="Red event">Red event</a></p>
</div>

J'ai travaillé sur le jQuery pour deux jours! Pas sûr que d'utiliser .filter ou .hasClass ou .is. Rien de tout cela fonctionne. Le plus simple que j'ai essayé était:

function showEvents(color) {
    ($('p').hasClass(color)) ? this.style.display="block" : this.style.display="none";
}

Une autre tentative qui n'a rien n'a été

function showEvents(color){
    $("p[className*='event-']").css('display', 'none');
    $("p[className=color]").css('display', 'block');
    if ($("p[className='event-all']")) 
        $("p[className*='event-']").css('display', 'block');
}

Toute aide sera appréciée!

OriginalL'auteur dac | 2010-12-18