J'ai un système de filtrage sur mon blog, ça fonctionne bien, mais je me demande juste comment je ne peux pas répéter cette fonction encore et encore.Comment puis-je pas répéter cette fonction
Heres le code html:
<div class="postFilter">
<ul>
<li><a href="#" class="filter filter1 filterActive">all</a></li>
<li><a href="#" class="filter filter2">another link</a></li>
<li><a href="#" class="filter filter3">third link</a></li>
<li><a href="#" class="filter filter4">fourth</a></li>
<li><a href="#" class="filter filter5">fifth</a></li>
</ul>
</div><!-- /.postFilter -->
et jquery j'utilise:
$('.filter1').on('click', function(e){
e.preventDefault();
// add & Remove filter
$('.filter').removeClass('filterActive');
$('.filter1').addClass('filterActive');
// hide & show categories
$('.categ').hide();
$('.categ1').show();
});
$('.filter2').on('click', function(e){
e.preventDefault();
// add & Remove filter
$('.filter').removeClass('filterActive');
$('.filter2').addClass('filterActive');
// hide & show categories
$('.categ').hide();
$('.categ2').show();
});
je le répète 5 fois, je sais ce que je veux faire, je veux voir si le filtre clicked est égal à 1,2,3,4,5 puis affiche le code de la fonction répondante. mais je ne sais pas par où commencer.
oublié de mentionner que j'ai essayé:
var filterNum;
$('.filter').on('click', function(e){
e.preventDefault();
if($('.filter').hasClass('filter1')){
filterNum = 1;
}else if($('.filter').hasClass('filter2')){
filterNum = 2;
}else if($('.filter').hasClass('filter3')){
filterNum = 3;
}else if($('.filter').hasClass('filter4')){
filterNum = 4;
}else if($('.filter').hasClass('filter5')){
filterNum = 5;
}
filterClick(filterNum);
});
function filterClick(number){
// add & Remove filter
$('.filter').removeClass('filterActive');
$('.filter' + number).addClass('filterActive');
// hide & show categories
$('.categ').hide();
$('.categ' + number).show();
}
Votre tentative est proche, mais au lieu d'utiliser '$ hasClass()', vous voulez probablement ' $ (this) .hasClass() '. – Santi
Merci! ça a marché. – RD2411
Content de l'entendre. Pendant que votre idée fonctionne, j'aime personnellement la réponse d'empirique ci-dessous. L'utilisation des attributs de données est une façon agréable et propre d'éviter votre partie géante 'if/else'. Vous voulez écrire votre code de sorte que vous puissiez avoir 99 filtres et ne pas avoir à le toucher, ce que la méthode 'data' réalise, alors que le vôtre nécessitera 94 lignes de code supplémentaires :) – Santi