javascript - 重构 jQuery 以影响 N 个 anchor 和 div 对的数量

标签 javascript jquery html refactoring

我有未知数量的链接和 div 对,我根据点击隐藏和显示它们。我知道必须有更好的方法来做到这一点 - 重构我的代码以获取数字部分并从 01 到 N 循环它们。

虽然下面的示例有 4 对 anchor 标记和 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();
});

关于javascript - 重构 jQuery 以影响 N 个 anchor 和 div 对的数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40456749/

相关文章:

python - BeautifulSoup 在标签中寻找标签

html - 我希望我的菜单在事件时带有下划线,而不仅仅是悬停。那可能吗? (不是常规的下划线代码)

javascript - Ajax加载图片错误

javascript - jquery 传递 JSON 返回 undefined

jquery - 按比例调整动态加载图像的大小并将它们垂直和水平居中

javascript - 消除在其他元素的滚动事件上更新元素的滚动顶部/滚动左时的延迟

javascript - 是否可以在通过 javascript 修改的对象上添加事件监听器?

javascript - 如何将预加载器添加到其 src 动态更改的 iframe?

javascript - Jquery Ajax加载除某个div之外的整个页面

html - 在 HTML5 的表格标题中使用按钮在语义上是否正确?