2014-02-06 59 views
2

我有以下HTML:計數連續元素,直到另一個階級出現

<div class="wrapper"> 
    <div class="countme"> </div> 
    <div class="countme"> </div> 
    <div class="countme"> </div> 
    <div class="stophere"> </div> 
    <div class="whatever"> </div> 
    <div class="countme"> </div> 
    <div class="countme"> </div> 
    <div class="countme"> </div> 
</div> 

我想知道之前的任何出現另一個類的div countme的數量。 $('.countme').length不起作用,因爲它給出的結果爲當我期待的結果當然應該是當然。

回答

7

獲取第一個,那麼獲得下的人,直到別的東西發生,並且加回的第一個

$('.countme').first().nextUntil(':not(.countme)').addBack().length 

FIDDLE

+0

爲什麼'.addBack()'?只需'.length + 1'。 – Bergi

+0

當選擇'nextUntil'時,'first()'被丟棄,新的選擇器和全部,所以我必須添加它? – adeneo

+1

我認爲他的意思是爲什麼不在結果中加'1'。雖然它會錯誤地導致空集合的'1'。 – undefined

1

你可以嘗試這樣的事:

$(function() { 
    var count = 0; 
    $(".wrapper div").each(function(){ 

     if($(this).attr('class') == 'countme'){ 
      count++; 
     }else{ 
      if(count > 0){ 
       return false; 
      } 
     } 

    }); 
    alert(count); 
}) 

FIDDLE

+0

歡迎來到本網站!請考慮添加一個解釋;答案在包含解決方案和解釋時最有用。 –

+0

謝謝......埃德科特雷爾。問題是我不會說多少英文hehehe ...但我會嘗試幫助解釋.. :) –

相關問題