切换表行兄弟

时间:2010-03-11 21:14:50

标签: jquery

我有一个像这样的结构表:

<table>
<tr id="id1" class="parent"></tr>
<tr class="id1"></tr>
<tr class="id1"></tr>
<tr class="id1"></tr>
<tr class="id1"></tr>

<tr id="id2" class="parent"></tr>
<tr class="id2"></tr>
<tr class="id2"></tr>
<tr class="id2"></tr>
<tr class="id2"></tr>

.....etc
</table>

正如您所看到的,子类与其父ID相对应。现在我想在每次单击父行时切换所有类名等于其父行id的行。

我试过这个,也许是愚蠢的尝试:)并且似乎无法让这个工作:

  $('tr.parent').click(function() {
    //alert('yay');
    var tog = $(this).attr('id');
    $(this).siblings().hasClass(tog).slideToggle();
    return false;
  });

感谢。

2 个答案:

答案 0 :(得分:3)

几乎就在那里,你好哟:

$('tr.parent').click(function() {
  var tog = $(this).attr('id');
  $(this).siblings('.' + tog).slideToggle();
  return false;
});

.hasClass()返回一个布尔值,它检查一个元素是否有一个类,你想要按类过滤。 .siblings()接受选择器过滤器see here for details

如果子行总是像你的例子一样,你可以使这个效率更高一点.nextAll()这样的前向查找:

$('tr.parent').click(function() {
  $(this).nextAll('.' + $(this).attr('id')).slideToggle();
});

答案 1 :(得分:0)

Jquery代码:

<script type="text/javascript">
    $(document).ready(function () {

        $('table').children('tbody').toggle(false);
        $(".lnkToggle").bind('click', function () {
            $(this).closest('table').children('tbody').toggle();
        });

    });
</script>

HTML表:

<table class="table table-striped">
    <thead>
        <tr>
            <th style="text-align: left; width: 250px;">
                <i class="lnkToggle" title="Click to view cases"> + </i>
                MOVIES
            </th>
        </tr>
    </thead>

    <tbody>
        <tr>
            <td>MATRIX</td>
        </tr>
        <tr>
            <td>TOY STORY</td>
        </tr>
        <tr>
            <td>THE GOONIES</td>
        </tr>
    </tbody>
</table>