2017-05-03 54 views
0

所以我想達到的是以下代碼計數siblings,但在sibling停止不符合要求。jQuery - 計數元素,直到您到達特定元素並停止計數

因此,舉例來說,下面的示例不是獲得6的計數,而是返回4,因爲它將從活動計數到第一個fieldset而不計入percent class

喜歡的東西:$("fieldset.active").andSelf().siblings('fieldset.percent').stop().not('.percent').length;

貝婁是代碼的工作起點。

var jump = $("fieldset.active").andSelf().siblings('fieldset.percent').length; 
 

 
$('.result').html('Counted: '+jump);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 
 
<fieldset> 
 
0 - dont Count 
 
</fieldset> 
 
<fieldset class="active"> 
 
1 - count me 
 
</fieldset> 
 
<fieldset class="percent"> 
 
2 - count me 
 
</fieldset> 
 
<fieldset class="percent"> 
 
3 - count me 
 
</fieldset> 
 
<fieldset class="percent"> 
 
4 - count me 
 
</fieldset> 
 
<fieldset> 
 
5 Stop here - dont Count 
 
</fieldset> 
 
<fieldset class="percent"> 
 
6 - dont Count 
 
</fieldset> 
 
<fieldset class="percent"> 
 
7 - dont Count 
 
</fieldset> 
 
<fieldset> 
 
8 - dont Count 
 
</fieldset> 
 
<fieldset class="percent"> 
 
9 - dont Count 
 
</fieldset> 
 
<div class="result"></div>
。您當前的代碼

回答

2

基地,您可以使用此:

$("fieldset.active") 
    .first() // Select the first active class 
    .nextUntil(':not(fieldset.percent)') // Select all field after untill you hit a field that doesn't have .percent class 
    .addBack() // Add the first element 
    .length; // Get the length 

當然,這取決於你確切的代碼,還有其他變量。這適用於給定的片段。

0

請注意,andSelf()已被棄用,因爲jQuery 1.8(和你使用jQuery 1.9)。改爲使用addBack()

隨着所考慮,你可以這樣做:

var jump = $("fieldset.active:eq(0)").nextUntil(':not(.percent)').addBack().length; 
 

 
$('.result').html('Counted: '+jump);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 
 
<fieldset> 
 
0 - dont Count 
 
</fieldset> 
 
<fieldset class="active"> 
 
1 - count me 
 
</fieldset> 
 
<fieldset class="percent"> 
 
2 - count me 
 
</fieldset> 
 
<fieldset class="percent"> 
 
3 - count me 
 
</fieldset> 
 
<fieldset class="percent"> 
 
4 - count me 
 
</fieldset> 
 
<fieldset> 
 
5 Stop here - dont Count 
 
</fieldset> 
 
<fieldset class="percent"> 
 
6 - dont Count 
 
</fieldset> 
 
<fieldset class="percent"> 
 
7 - dont Count 
 
</fieldset> 
 
<fieldset> 
 
8 - dont Count 
 
</fieldset> 
 
<fieldset class="percent"> 
 
9 - dont Count 
 
</fieldset> 
 
<div class="result"></div>