当前位置:  开发笔记 > 前端 > 正文

在HTML表中隐藏/显示列

如何解决《在HTML表中隐藏/显示列》经验,为你挑选了5个好方法。

我有一个包含多个列的HTML表,我需要使用jquery实现列选择器.当用户单击复选框时,我想隐藏/显示表中的相应列.我想这样做而不将表附加到表中的每个td,有没有办法使用jquery选择整个列?以下是HTML的示例.

Header 1Header 2Header 3
Column1Column2Column3
Column1Column2Column3
Column1Column2Column3
Column1Column2Column3
Hide/Show Column 1
Hide/Show Column 2
Hide/Show Column 3

Leniel Macca.. 239

使用jQuery隐藏第二列的一行代码:

$('td:nth-child(2)').hide();

如果您的表有标题(th),请使用:

$('td:nth-child(2),th:nth-child(2)').hide();

来源:使用单行jQuery代码隐藏表列

jsFiddle测试代码:http://jsfiddle.net/mgMem/1/


如果你想看一个好的用例,请看看我的博客文章:

使用jQuery隐藏表列并基于值着色行.



1> Leniel Macca..:

使用jQuery隐藏第二列的一行代码:

$('td:nth-child(2)').hide();

如果您的表有标题(th),请使用:

$('td:nth-child(2),th:nth-child(2)').hide();

来源:使用单行jQuery代码隐藏表列

jsFiddle测试代码:http://jsfiddle.net/mgMem/1/


如果你想看一个好的用例,请看看我的博客文章:

使用jQuery隐藏表列并基于值着色行.


+1这实际上听起来比接受的答案要好得多
我必须将tbody添加到选择器以避免使用寻呼机隐藏页脚:$('.webgrid tbody td:nth-​​child(1),. webgrid th:nth-​​child(1)').hide();

2> bobince..:

我想这样做而不需要为每个td附加一个类

就个人而言,我会采用class-on-each-td/th/col方法.然后,您可以使用对容器上的className的单个写入来打开和关闭列,假设样式规则如下:

table.hide1 .col1 { display: none; }
table.hide2 .col2 { display: none; }
...

这比任何JS循环方法都要快; 对于很长的表,它可以对响应性产生重大影响.

如果你可以逃避不支持IE6,你可以使用邻接选择器来避免必须将类属性添加到tds.或者,如果您关心的是使标记更清晰,您可以在初始化步骤中自动从JavaScript添加它们.


感谢您的建议,我曾希望保持HTML更清洁,但性能肯定成为一个问题,因为表大小接近100行.该解决方案提供了2-5倍的性能提升.
我把它添加到我的css`.隐藏{display:none;}`并使用`.addClass('hidden')`和`.removeClass('hidden')`这比`.hide()`快一点`.show()`.
这种方法对我来说很有意义,表现方面.谢谢!

3> Luis Melgrat..:

你可以使用colgroups:

Header 1Header 2Header 3
Column1Column2Column3
Column1Column2Column3
Column1Column2Column3
Column1Column2Column3

然后你的脚本可以改变欲望类.


这似乎在现代浏览器(Chrome和Firefox)中不再起作用了

4> Eran Galperi..:

以下应该这样做:

$("input[type='checkbox']").click(function() {
    var index = $(this).attr('name').substr(2);
    $('table tr').each(function() { 
        $('td:eq(' + index + ')',this).toggle();
    });
});

这是未经测试的代码,但原则是您在每行中选择与从复选框名称中提取的所选索引相对应的表格单元格.您当然可以使用类或ID限制选择器.



5> KyleMit..:

这是功能更全的答案,它在每列的基础上提供了一些用户交互。如果这将是一种动态体验,则每个列上都需要有一个可单击的切换,以指示可以隐藏该列的能力,然后需要一种方法来还原以前隐藏的列。

在JavaScript中看起来像这样:

$('.hide-column').click(function(e){
  var $btn = $(this);
  var $cell = $btn.closest('th,td')
  var $table = $btn.closest('table')

  // get cell location - /sf/ask/17360801/
  var cellIndex = $cell[0].cellIndex + 1;

  $table.find(".show-column-footer").show()
  $table.find("tbody tr, thead tr")
        .children(":nth-child("+cellIndex+")")
        .hide()
})

$(".show-column-footer").click(function(e) {
    var $table = $(this).closest('table')
    $table.find(".show-column-footer").hide()
    $table.find("th, td").show()

})

为此,我们将在表中添加一些标记。在每个列标题中,我们可以添加类似的内容以提供可点击内容的可视指示


我们将允许用户通过表格页脚中的链接还原列。如果默认情况下它不是持久性的,则在表头中动态切换它可能会在表中产生混乱,但您实际上可以将其放置在所需的任何位置:


   
    Some columns hidden - click to show all
  

这是基本功能。这是下面的演示,还有更多细节。您还可以在按钮上添加工具提示,以帮助阐明按钮的用途,将按钮有机地设置为表格标题的样式,并折叠列宽,以添加一些(有点奇怪的)css动画以使过渡少一些跳动的。

jsFiddle和Stack片段中的工作演示:

$(function() {
  // on init
  $(".table-hideable .hide-col").each(HideColumnIndex);

  // on click
  $('.hide-column').click(HideColumnIndex)

  function HideColumnIndex() {
    var $el = $(this);
    var $cell = $el.closest('th,td')
    var $table = $cell.closest('table')

    // get cell location - /sf/ask/17360801/
    var colIndex = $cell[0].cellIndex + 1;

    // find and hide col index
    $table.find("tbody tr, thead tr")
      .children(":nth-child(" + colIndex + ")")
      .addClass('hide-col');
      
    // show restore footer
    $table.find(".footer-restore-columns").show()
  }

  // restore columns footer
  $(".restore-columns").click(function(e) {
    var $table = $(this).closest('table')
    $table.find(".footer-restore-columns").hide()
    $table.find("th, td")
      .removeClass('hide-col');

  })

  $('[data-toggle="tooltip"]').tooltip({
    trigger: 'hover'
  })

})
body {
  padding: 15px;
}

.table-hideable td,
.table-hideable th {
  width: auto;
  transition: width .5s, margin .5s;
}

.btn-condensed.btn-condensed {
  padding: 0 5px;
  box-shadow: none;
}


/* use class to have a little animation */
.hide-col {
  width: 0px !important;
  height: 0px !important;
  display: block !important;
  overflow: hidden !important;
  margin: 0 !important;
  padding: 0 !important;
  border: none !important;
}









Controller Action Type Attributes
Home Index ActionResult Authorize
Client Index ActionResult Authorize
Client Edit ActionResult Authorize
Some columns hidden - click to show all
推荐阅读
mobiledu2402851203
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有