Jquery 隐藏表列,哪个应用了colspan。。。?
我读了很多问题,但都不符合我的情况。 这是我的桌子结构 如果我想在代码下方隐藏列A或B,请为我工作Jquery 隐藏表列,哪个应用了colspan。。。?,jquery,html,css,css-selectors,Jquery,Html,Css,Css Selectors,我读了很多问题,但都不符合我的情况。 这是我的桌子结构 如果我想在代码下方隐藏列A或B,请为我工作 $('table td:nth-child(1),table th:nth-child(1)').hide(); $('table td:nth-child(2),table th:nth-child(2)').hide(); 但如果我想删除C或更高版本的列,这会给我带来问题。 就像下面的代码给了我不相关的输出 $('table td:nth-child(3),table th:nth-chi
$('table td:nth-child(1),table th:nth-child(1)').hide();
$('table td:nth-child(2),table th:nth-child(2)').hide();
但如果我想删除C或更高版本的列,这会给我带来问题。
就像下面的代码给了我不相关的输出
$('table td:nth-child(3),table th:nth-child(3)').hide();
请为这个纯CSS查找fiddle
这可以通过CSS使用和选择器来完成:
tr:n个孩子(3),
tr:n个孩子(3):不是([colspan])+:n个孩子(4){
显示:无;
}
这样做的目的是隐藏第三个子元素,然后隐藏第三个子元素前面没有colspan
属性的元素
在您的表中,这将隐藏内容为C
、3
和4
的单元格
更新
正如BoltClock一样,上述CSS将针对在tr
中找到的任何:n子(n)
。为了确保这只针对td
或th
元素,我们可以引入子组合器(
):
tr>:第n个子项(3),
tr>:第n个孩子(3):不是([colspan])+:第n个孩子(4){
显示:无;
}
如果td
或th
元素包含自己的子元素,则需要使用此选项
jQuery
使用jQuery,您可以循环遍历每个tr
元素,确定第一行匹配的th
元素是否具有colspan
属性,然后进行相应的处理。在这里,我将其包装在一个名为hideColumn()
的函数中,该函数接受一个与要隐藏的列相关的n参数:
$(function() {
function hideColumn(n) {
var headerColSpan = 1;
$('tr').each(function(i) {
var nth = $(this).children()[n-1],
colspan = $(nth).attr('colspan');
// Pull ColSpan from first row th element
if (i === 0)
headerColspan = colspan || 1;
if (colspan === headerColspan)
$(nth).hide();
else
for (i=0; i < headerColspan; i++) {
$($(this).children()[n-1+i]).hide();
}
});
}
hideColumn(3);
});
$(函数(){
函数hideColumn(n){
var headerColSpan=1;
$('tr')。每个(函数(i){
var nth=$(this.children()[n-1],
colspan=$(n次).attr('colspan');
//从第一行第th元素中拉出ColSpan
如果(i==0)
headerColspan=colspan | | 1;
if(colspan==headerColspan)
$(第n个).hide();
其他的
对于(i=0;i
.你会拉小提琴吗?当然。您正在删除第三个子项-在中间的列上,您还需要删除第四个子项。对于第三个子项,您需要隐藏第四个子项。如果您知道需要隐藏哪些列,如何向要隐藏的列添加特定的CSS类,并使用
$('.toggle-column1').toggle()显示/隐藏这些列代码>?参见示例摆弄两个可切换的列组(刚刚更新):很好,但您能否指导我如何使用jquery应用相同的列组。@Deer我已经在我的答案中添加了一个jquery解决方案。我希望使用一些简洁的jquery,但我认为必须编写这么多行代码。Thanksit不会为hideColumn工作(5);如有任何更新,请告诉我您的要求与您最初的要求有很大差异。我最初的CSS解决方案回答了您最初提出的问题。