首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JQuery表格切换行问题

问JQuery表格切换行问题
EN

Stack Overflow用户
提问于 2014-06-06 23:47:59
回答 1查看 137关注 0票数 0

我有一个动态创建的表格。我想尽量不在表中有更多的属性(比如ID字段)。这是一个多级表格,其中所有的TableRows都应该是可展开的,单击每一行中的任何TD都可以折叠。

代码语言:javascript
复制
$('.fylke_click').click(function () {
    $(this).parent().nextUntil('.fylke').slideToggle(0);
    $('.sted').hide();
});

$('.kom_click').click(function () {
    $(this).parent().nextUntil('.kommune').slideToggle(0);
});

看看这个简化的小提琴:http://jsfiddle.net/T2Lwn/

所以它基本上是3个级别,这里有很多问题。一个明显的问题是当你在第二层时,它被称为"kommune“,如果你点击最后一个TR,它会删除下面的"fylke”。正如你所看到的,如果你点击"MIDTRE GAULDAL“,这可能是因为我使用了.Parent(),我需要检查一下我是否在最后一行?

这段代码还存在其他问题吗?我可以在更一般的级别上指定单击方法class="fylke_click"和class="kom_click"吗?例如,对于所有<tr class="fylke">,每个TD类都将具有class="fylke_click",对于kommunne也是如此

EN

回答 1

Stack Overflow用户

发布于 2014-06-07 00:52:36

如果我正确理解您的问题,这可能会有所帮助:

既然您说要动态创建此内容,我建议您在主表之外进行委托,而不是为每一行创建一个单击处理程序。此外,由于您想要显示/隐藏的所有内容都是同级的,而不是嵌套的,所以事情变得有点棘手。你需要通过传递一个过滤器来指定你的.nextUntil(),我发现过滤器上的:not()是必要的。

同样,因为它们都是兄弟,所以隐藏标题行的子项并不容易,所以我设置了一个" open“类来检查标题是否打开,并根据标题是否已经打开来隐藏/显示内容。JS:

代码语言:javascript
复制
$('.kommune').hide();
$('.sted').hide();

$('.table').on('click', 'tr', function(){
    $this = $(this);

    if( $this.hasClass('fylke') ){
        if ( $this.hasClass('open') ) {
            $this.toggleClass('open').nextUntil('.fylke', 'tr').hide();
        }
        else {
            $this.toggleClass('open').nextUntil('.fylke', 'tr:not(.sted)').toggle();
        }
    }
    else if ( $this.hasClass('kommune') ){
        $this.nextUntil('.kommune', 'tr:not(.fylke)').toggle();
    }
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24085887

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档