javascript - 响应式可折叠表格一次一个 :

标签 javascript html css

第一次上stackoverflow,所以请不要打我太多。

我正在使用 codepen 中的现有代码,并试图弄清楚如何一次扩展一个表。

目前,如果我们点击多个“+”图标,它们会保持打开状态,想知道我们如何才能做到这一点,以便在点击“+​​”符号时关闭之前展开的元素。

我尝试调整这里的布局无济于事:

$('.js-tdToggle').on('click', function(){
    if(window.innerWidth < 681){
        $(this).toggleClass("fa-plus-square fa-minus-square");
        var trParent = $(this).parent().parent();
        trParent.toggleClass("collapse");
    } else {
        $(this).toggleClass("fa-plus-square fa-minus-square");
        var tdParent = $(this).parent();
        tdParent.next("td").toggleClass("collapse");
    }   
});

Original Source Codepen

最佳答案

您必须在每隔一个开关执行相反操作的位置添加代码。 JQuery 的.not() 函数对此非常有用。经过我的更改,JavaScript 看起来像这样:

$('.js-tdToggle').on('click', function() {
  var $otherToggles = $(".js-tdToggle.fa-minus-square");
  if (window.innerWidth < 681) {
    $(this).toggleClass("fa-plus-square fa-minus-square");
    $otherToggles.not(this).toggleClass("fa-minus-square fa-plus-square");
    var trParent = $(this).parent().parent();
    trParent.toggleClass("collapse expand");
    var $otherParents = $otherToggles.parent().parent();
    $otherParents.removeClass("expand").addClass(" collapse");
  } else {
    $(this).toggleClass("fa-plus-square fa-minus-square");
    $otherToggles.not(this).toggleClass("fa-minus-square fa-plus-square");
    var tdParent = $(this).parent();
    tdParent.next("td").toggleClass("collapse expand");
    var $otherParents = $($otherToggles).not(this).parent();
    $otherParents.next("td").toggleClass("expand collapse");
  }
});

你可以引用我的 fork 笔来查看它的实际效果:codepen.io

关于javascript - 响应式可折叠表格一次一个 :,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55525788/

相关文章:

javascript - 直接从 node.js 中的文件解析 JSON

html - 像 twitter bootstrap 一样的单杠图标

javascript - jQuery 自动调整标签高度

javascript - 如何在横幅上添加和对齐按钮?

javascript - div和图片的滚动效果

css - 如何在html中定位垂直滚动条?

javascript - SublimeVideo JavaScript

javascript - 无法在模式对话框中嵌入 Google 图表服务

javascript - 使用cookie作为计数器?

css - 右对齐的 Bootstrap 容器,它也与默认容器对齐