我有我的博客上的过滤系统,它工作正常,但即时通讯只是想知道我不能重复这个功能一遍又一遍。我怎么能不重复这个功能
继承人的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 -->
,我使用jQuery:
$('.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();
});
我重复这5次,我知道我想做什么,我想看看过滤器点击等于1,2,3,4,5,然后显示响应函数的代码。但我不知道从哪里开始。
忘了提我已经试过这样:
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();
}
你尝试收盘,但不是使用'$ hasClass()',你可能想' $(本).hasClass()'。 – Santi
谢谢!那工作。 – RD2411
很高兴听到它。当你的想法有效时,我个人喜欢经验的答案如下。使用数据属性是避免巨大'if/else'部分的一个很好且干净的方法。你想编写你的代码,这样你就可以拥有99个过滤器,而不必触摸它,这是'data'方法实现的,而你的代码需要94行代码:) – Santi