2009-12-08 2 views
1

Например:Использование JQuery, как я могу найти все экземпляры класса, которые появляются между другим классом

<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?

ответ

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

EDIT

Это, кажется, чтобы выбрать все .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

Единственная проблема с этим, если есть больше отступ после следующего highligt. – ChaosPandion

+0

+1 ты меня избил. – ChaosPandion

+0

Это, похоже, работает, спасибо. –

0

Это относится щелчок только блик с «кликом» и возвращает только отступы между «нажмите» и следующий изюминкой он сталкивается.

Он использует селектор 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"; 
     } 
    }); 
});