我有一些未知的链接和div,它们是根据点击隐藏和显示的。我知道必须有一个更好的方法来执行此操作-重构我的代码以包含数字部分,并将它们从01循环到N。

虽然下面的示例有4对锚标记和div,但数量可能在1到100之间(或更多)

HTML标记:

<a class="bioImg bioImg01"></a>
<a class="bioImg bioImg02"></a>
<a class="bioImg bioImg03"></a>

<div class="bioContainer bioContainer01">
</div>

<div class="bioContainer bioContainer02">
</div>

<div class="bioContainer bioContainer03">
</div>

<a class="bioImg bioImg04"></a>

<div class="bioContainer bioContainer04"></div>


JavaScript(jQuery):
我知道这是效率低下的部分-只是没有经验和词汇才能正确地做到这一点

// Click events for Bio page
    if ($('.bioImg').length > 0) {
        $('.bioImg').click(function() {
            $('.bioImg').removeClass('active');
            $(this).addClass('active');
        });
    }

if ($('.bioContainer').length > 0) {
    $('.bioImg01').click(function() {
        $('.bioContainer').hide();
        $('.bioContainer01').fadeToggle();
    });
}

if ($('.bioContainer').length > 0) {
    $('.bioImg02').click(function() {
        $('.bioContainer').hide();
        $('.bioContainer02').fadeToggle();
    });
}

if ($('.bioContainer').length > 0) {
    $('.bioImg03').click(function() {
        $('.bioContainer').hide();
        $('.bioContainer03').fadeToggle();
    });
}

if ($('.bioContainer').length > 0) {
    $('.bioImg04').click(function() {
        $('.bioContainer').hide();
        $('.bioContainer04').fadeToggle();
    });
}

最佳答案

您可以使用索引将这些组匹配在一起。除非您有特殊的CSS,否则很少需要为一组相同类型元素中的每个名称使用唯一的类名

var $bioImg = $('.bioImg').click(function() {
  // get index of current bioImg within collection
  var index = $bioImg.index(this);
  $bioImg.removeClass('active');
  $(this).addClass('active');
  // hide all containers and fade in matching indexed one
  $('.bioContainer').hide().eq(index).fadeIn();
});

10-04 19:59