使用jQuery,如何查找出现在另一个类之间的类的所有实例

时间:2009-12-08 17:03:30

标签: javascript jquery jquery-selectors traversal

例如:

<table>
  <tr class="highlight" id="click">
    <td>Rusty</td>
  </tr>
  <tr class="indent">
    <td>Dean</td>
  </tr>
  <tr class="indent">
    <td>Hank</td>
  </tr>
  <tr class="highlight">
    <td>Myra</td>
  </tr>
</table>

当我点击标识为click的小时时,如何找到类indent的所有实例,直到下一个类highlight的实例?

2 个答案:

答案 0 :(得分:7)

$('tr.highlight').click(function() {
    var $indents = $(this).nextAll('tr.indent');
});

修改

似乎选择所有.indents而不管.highlights。试试这个:

$('tr.highlight').click(function() {
    var row = $(this).next();
    var selection = false;
    while(row.hasClass('indent')) {
        if(!selection) {
            selection = row;
        } else {
            selection.add(row);
        }
        row = row.next();
    }
});

答案 1 :(得分:0)

这仅将点击应用于带有“click”的突出显示,并仅返回“click”与其遇到的下一个突出显示之间的缩进。

它使用jQuery~“next siblings”选择器为你做更多的工作。

http://jsfiddle.net/w_barath/bFZnH/2/

$("#click").bind('click', function() {
    var good = true;
    $("#click ~ tr").each(function(e) {
        if (this.className == "highlight") {
            good = false;
        }
        if (good && this.className == "indent") {
            this.style.background="red";
        }
    });
});