在javascript中选择特定表元素的最聪明方法是什么?

时间:2012-07-19 16:39:14

标签: javascript jquery html

我的桌子上有隐藏的行,就像这样

 -visible-
 -invisible-
 -visible-
 -invisible-

当我点击表格行时,我希望它显示不可见的行。目前我有使用此功能:

var grid = $('#BillabilityResults');
$(".tbl tr:has(td)").click(
         function () {
             $(grid.rows[$(this).index()+1]).toggle();
         }

但是,如果单击其中一个(现在可见的)隐藏行,此表还会隐藏可见行。 我希望click函数仅适用于特定的可见行。目前我所有的隐形行都有“偶数”类,所以我想我可以根据它限制点击。但是,我似乎无法找到解释为我的函数的语法。我该怎么做呢?而且,更重要的是,有更好的方法来解决这个问题吗?

4 个答案:

答案 0 :(得分:2)

使用下一个:

$(".tbl tr:has(td)").click(
  function () {
    $(this).next().toggle();
  } 
);

如果您有奇数或偶数的特定选择器:

$(".tbl tr.odd").click(
  function () {
    $(this).next().toggle();
  } 
);

但我认为我的答案的主要帮助是使用next()来获取下一行,而不是你正在进行的索引过程。

答案 1 :(得分:1)

var grid = $('#BillabilityResults');
$(".tbl tr:visible").click(
         function () {
             $(this).next('tr').toggle();
});

答案 2 :(得分:1)

使用NOT函数忽略EVEN tr元素:

http://jsfiddle.net/7AHmh/

<table class="tbl">
<tr><td>one</td></tr>
<tr class="even" style="display:none"><td>two</td></tr>
<tr><td>three</td></tr>
<tr class="even" style="display:none"><td>four</td></tr>
</table>​

$(".tbl tr:has(td)").not("tr.even").click(function() {

    alert("Click triggered.");

    $(this).next("tr").show(); 

});

答案 3 :(得分:1)

我猜你可以在调用你的切换代码之前用模数运算符检查偶数/奇数行:

function() { // your anonymous function
    if (rowNumber % 2 == 0) { // only even rows get through here
        // toggle code here
    }
}

我希望它有所帮助。