我正在寻找一些新手Javascript帮助。
我有一系列简单的功能,可以在来自标注的点击之后使用JQuery添加和删除一些滑块内容。如何重写以适用于任何类别(' cat1'等)内容?
$('.cat1_link').click(function(event) {
$('.category_slides li').fadeOut();
$('.cat1').fadeIn();
$('article.listitem').removeClass('current');
$('article.listitem.cat1').addClass('current');
});
$('.cat2_link').click(function(event) {
$('.category_slides li').fadeOut();
$('.cat2').fadeIn();
$('article.listitem').removeClass('current');
$('article.listitem.cat2').addClass('current');
});
答案 0 :(得分:4)
将您的HTML更改为:
<a class="cat_link" data-category="cat1" ...>
然后你可以把jQuery写成:
$('cat_link').click(function(event) {
var cat_class = $(this).data('category');
$('.category_slides li').fadeOut();
$('.'+cat_class).fadeIn();
$('article.listitem').removeClass('current');
$('article.listitem.'+cat_class).addClass('current');
});
答案 1 :(得分:2)
提取变化的“东西”并为保持不变的“东西”创建通用函数。第一次尝试就像是
$.each(['cat1', 'cat2'], function (i, e) {
$('.' + e + '_link').click(function(event) {
$('.category_slides li').fadeOut();
$('.' + e).fadeIn();
$('article.listitem').removeClass('current');
$('article.listitem.' + e).addClass('current');
});
});
可能有更简洁的方法来执行此操作,具体取决于您的标记的外观(以及您是否有任何控制权来更改它)。