热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

html中怎样隐藏列,关于jquery:隐藏/显示HTML表中的列

我有一个包含几列的HTML表,我需要使用jquery实现一个列选择器。当用户单击复选框时,我要隐藏显示表中的相应列。我想在不将类附加到表中的每个td的情

我有一个包含几列的HTML表,我需要使用jquery实现一个列选择器。 当用户单击复选框时,我要隐藏/显示表中的相应列。 我想在不将类附加到表中的每个td的情况下执行此操作,是否可以使用jquery选择整个列? 以下是HTML的示例。

Header 1Header 2Header 3

Column1Column2Column3Column1Column2Column3Column1Column2Column3Column1Column2Column3

Hide/Show Column 1

Hide/Show Column 2

Hide/Show Column 3

希望以下网站对您有所帮助:fiendish.demon.co.uk/html/Javascript/hidetablecols.html

我使用jQuery实现了该解决方案,并且对我来说效果非常好:http://www.devcurry.com/2009/07/hide-table-column-with-single-line-of.html

每个用户344059的评论,这是断开的链接的Web存档http://www.fiendish.demon.co.uk/html/Javascript/hidetablecols.html

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

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

如果您的表具有header(th),请使用此命令:

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

资料来源:用单行jQuery代码隐藏表格列

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

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

隐藏表列,并使用jQuery根据值对行着色。

顺便说一句,在示例中没有,是否没有忽略colspans的问题?好,如果您不使用它们。还有另一个相关问题:stackoverflow.com/questions/1166452/

我必须将tbody添加到选择器中,以避免用寻呼机隐藏页脚:$(。webgrid tbody td:nth-??child(1),.webgrid th:nth-??child(1))。hide();

@KimR这可能有助于解决colspan问题stackoverflow.com/questions/9623601/

我不知道为什么,但是我不得不使用nth-of-type来使其工作。例如:$(table td:nth-??of-type(2))。hide();

@LeopoldoSanczyk您使用的是Safari吗?似乎需要第n个类型

@ykay我忘了提及我使用的是Firefox。从日期来看,是32.0.X还是封闭版本。

@LeopoldoSanczyk好吧,我问,因为当客户要求他的网站在野生动物园工作时,我碰到了这一点。 Firefox也可能一样

注意:使用$(.mycol).closest(th).index()获取索引时,您必须添加1,因为nth-child从1开始!所以colIdx = $(.mycol).closest(th).index() + 1

I would like to do this without attaching a class to every td

就我个人而言,我会采用"每课时上课/上课/上课"的方法。然后,您可以通过对容器上的className的一次写操作来打开和关闭列,并假设样式规则如下:

table.hide1 .col1 { display: none; }

table.hide2 .col2 { display: none; }

...

这将比任何JS循环方法都要快。对于非常长的表,它可以对响应能力产生重大影响。

如果可以摆脱不支持IE6的困扰,则可以使用邻接选择器来避免将类属性添加到tds。或者,如果您担心使标记更整洁,则可以在初始化步骤中从Javascript自动添加它们。

感谢您的建议,我一直想保持HTML的整洁,但是当表的大小接近100行时,性能无疑成为一个问题。该解决方案将性能提高了2-5倍。

在性能方面,这种方法对我来说是个奇迹。谢谢!

我将此添加到css .hidden {display:none;}中并使用了.addClass(hidden)和.removeClass(hidden),这比.hide()和.show()快一点。

您可以使用colgroups:

Header 1Header 2Header 3

Column1Column2Column3Column1Column2Column3Column1Column2Column3Column1Column2Column3

然后,您的脚本可能只更改了欲望

类。

我似乎记得colgroup没有跨浏览器的支持,这不再是事实吗?

也许。我在hilight列上使用此方法,(firefox,safari,chrome正常工作)从未在IE中尝试过。

@Brian-IE8无法正常工作,启用IE7的IE8似乎可以正常工作。

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

@JBE:确切地说,这在某种程度上可以在现代浏览器中使用。使用$(table > colgroup > col.yourClassHere) jQuery选择器,您仍然可以像设置整个列的背景色一样设置smth,但是您将无法再切换列的可见性。经过测试的浏览器是MSIE 11,Safari 5,Chromium 44,Opera 12,Mozilla SeaMonkey 2.40,Mozilla Firefox43。" HTML5不支持HTML 4.01中的大多数属性"-请参见此处。

请执行以下操作:

$("input[type='checkbox']").click(function() {

var index = $(this).attr('name').substr(2);

$('table tr').each(function() {

$('td:eq(' + index + ')',this).toggle();

});

});

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

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

在Javascript中看起来像这样:

$('.hide-column').click(function(e){

var $btn = $(this);

var $cell = $btn.closest('th,td')

var $table = $btn.closest('table')

// get cell location - https://stackoverflow.com/a/4999018/1366033

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()

})

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

data-toggle="tooltip" data-placement="bottom" title="Hide Column">

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

Some columns hidden - click to show all

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

r0wDN.gif

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 - https://stackoverflow.com/a/4999018/1366033

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

HomeIndexActionResultAuthorizeClientIndexActionResultAuthorizeClientEditActionResultAuthorizeSome columns hidden - click to show all

您正在隐藏最近的1列,如何隐藏最近的3列?

检查我的表格-i.stack.imgur.com/AA8iZ.png和包含表格html的问题-stackoverflow.com/questions/50838119/按钮将在A,B和C之后

很抱歉,无法恢复这样的旧答案,但是是否有一种简单的方法可以将某些列默认设置为隐藏?我试图用$(document).ready这样做但没有运气

@RobotJohnny,好问题。这使用类.hide-col删除列,但是它也可以用于指示状态,因此您可以-在呈现html时将.hide-col添加到每个td和tr中并完成操作。或者,如果您想将其添加到更少的位置,则将其放置在标题中(该状态必须到某个地方),并在初始化时使用它在子级中隐藏该列索引。当前,代码只是侦听单击位置,但也可以对其进行修改以查找类位置。还有,土耳其快乐的一天

@RobotJohnny,我更新了代码示例以包括初始化处理。 只需将class=hide-col放到html中您想要的任何位置(可能在thead > tr > th中最有意义,它将进行选择以确保它隐藏了该列中的所有单元格并动态显示了还原页脚

隐藏任何列时如何保持列宽固定?

@sjain,演示中的表的宽度设置为100%,因此,当删除列时,其他列将占据该空间。 一种方法是不让表格填充100%的宽度,然后每列将独立调整大小并保留其宽度,无论可见的是什么。 这是jsFiddle中这种方法的示例

当然,对于支持nth-child的浏览器,CSS唯一的方法是:

table td:nth-child(2) { display: none; }

这适用于IE9及更高版本。

对于您的用例,您需要几个类来隐藏列:

.hideCol1 td:nth-child(1) { display: none;}

.hideCol2 td:nth-child(2) { display: none;}

等等...

First Name

....

...

$(document).ready(function() {

$('#demo').multiselect();

});

$("input:checkbox:not(:checked)").each(function() {

var column ="table ." + $(this).attr("name");

$(column).hide();

});

$("input:checkbox").click(function(){

var column ="table ." + $(this).attr("name");

$(column).toggle();

});

以下内容基于Eran的代码进行了一些小的更改。经过测试,它在Firefox 3,IE7上似乎可以正常工作。

/p>

"http://www.w3.org/TR/html4/loose.dtd">

$(document).ready(function() {

$('input[type="checkbox"]').click(function() {

var index = $(this).attr('name').substr(3);

index--;

$('table tr').each(function() {

$('td:eq(' + index + ')',this).toggle();

});

$('th.' + $(this).attr('name')).toggle();

});

});

Header 1Header 2Header 3

Column1Column2Column3Column1Column2Column3Column1Column2Column3Column1Column2Column3

Hide/Show Column 1

Hide/Show Column 2

Hide/Show Column 3

没有课?然后,您可以使用标签:

var tds = document.getElementsByTagName('TD'),i;

for (i in tds) {

tds[i].style.display = 'none';

}

并显示给他们使用:

...style.display = 'table-cell';



推荐阅读
  • 前端开发工程师必读书籍有哪些值得推荐?我们直接进入代码复杂版式设置,如下所示,先写些标签,源码在这个链接里面:https://codepen.io/Shadid ... [详细]
  • position属性absolute与relative的区别和用法详解
    本文详细解读了CSS中的position属性absolute和relative的区别和用法。通过解释绝对定位和相对定位的含义,以及配合TOP、RIGHT、BOTTOM、LEFT进行定位的方式,说明了它们的特性和能够实现的效果。同时指出了在网页居中时使用Absolute可能会出错的原因,即以浏览器左上角为原始点进行定位,不会随着分辨率的变化而变化位置。最后总结了一些使用这两个属性的技巧。 ... [详细]
  • 标题: ... [详细]
  • 本文介绍了网页播放视频的三种实现方式,分别是使用html5的video标签、使用flash来播放以及使用object标签。其中,推荐使用html5的video标签来简单播放视频,但有些老的浏览器不支持html5。另外,还可以使用flash来播放视频,需要使用object标签。 ... [详细]
  • 本文整理了Java中org.apache.solr.common.SolrDocument.setField()方法的一些代码示例,展示了SolrDocum ... [详细]
  • 本文整理了常用的CSS属性及用法,包括背景属性、边框属性、尺寸属性、可伸缩框属性、字体属性和文本属性等,方便开发者查阅和使用。 ... [详细]
  • 本文总结了Java中日期格式化的常用方法,并给出了示例代码。通过使用SimpleDateFormat类和jstl fmt标签库,可以实现日期的格式化和显示。在页面中添加相应的标签库引用后,可以使用不同的日期格式化样式来显示当前年份和月份。该文提供了详细的代码示例和说明。 ... [详细]
  • Nginx使用(server参数配置)
    本文介绍了Nginx的使用,重点讲解了server参数配置,包括端口号、主机名、根目录等内容。同时,还介绍了Nginx的反向代理功能。 ... [详细]
  • 本文介绍了使用AJAX的POST请求实现数据修改功能的方法。通过ajax-post技术,可以实现在输入某个id后,通过ajax技术调用post.jsp修改具有该id记录的姓名的值。文章还提到了AJAX的概念和作用,以及使用async参数和open()方法的注意事项。同时强调了不推荐使用async=false的情况,并解释了JavaScript等待服务器响应的机制。 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • Tomcat/Jetty为何选择扩展线程池而不是使用JDK原生线程池?
    本文探讨了Tomcat和Jetty选择扩展线程池而不是使用JDK原生线程池的原因。通过比较IO密集型任务和CPU密集型任务的特点,解释了为何Tomcat和Jetty需要扩展线程池来提高并发度和任务处理速度。同时,介绍了JDK原生线程池的工作流程。 ... [详细]
  • Tkinter Frame容器grid布局并使用Scrollbar滚动原理
    本文介绍了如何使用Tkinter实现Frame容器的grid布局,并通过Scrollbar实现滚动效果。通过将Canvas作为父容器,使用滚动Canvas来滚动Frame,实现了在Frame中添加多个按钮,并通过Scrollbar进行滚动。同时,还介绍了更新Frame大小和绑定滚动按钮的方法,以及配置Scrollbar的相关参数。 ... [详细]
  • 本文整理了Java中org.apache.hadoop.hive.ql.plan.ExprNodeColumnDesc.getTypeInfo()方法的一些代码示例,展 ... [详细]
  • CSS|网格-行-结束属性原文:https://www.gee ... [详细]
  • 如何用Matlab快速画出带有3D渲染效果的复杂曲面
    简要地介绍了一下如何用Matlab快速画出带有3D渲染效果的复杂曲面图,包括三维曲面绘制、光线、材质、着色等等控制,以及如何 ... [详细]
author-avatar
清新之乄风666
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有