Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 隐藏表列,哪个应用了colspan。。。?_Jquery_Html_Css_Css Selectors - Fatal编程技术网

Jquery 隐藏表列,哪个应用了colspan。。。?

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

我读了很多问题,但都不符合我的情况。 这是我的桌子结构

如果我想在代码下方隐藏列AB,请为我工作

$('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解决方案回答了您最初提出的问题。