2013-02-04 28 views
2

我想這是很簡單,但我不能找出如何做到這一點:在jQuery的選擇編號的元素範圍

想我具備的要素:

<div class="1">Div 1</div> 
<div class="2">Div 2</div> 
<div class="3">Div 3</div> 
<div class="4">Div 4</div> 
<div class="5">Div 5</div> 
<div class="6">Div 6</div> 
<div class="7">Div 7</div> 
<div class="8">Div 8</div> 

,想瞄準特定範圍內的元素,以更改一些CSS屬性。例如:

$(Class > 3 and < 7).css("background","#0077C1"); 

很明顯,範圍會發生變化。在給定範圍內選擇元素的最簡單方法是什麼?

如果您認爲這可以通過比使用類更簡單的方式來實現(我認爲這很可能),請提一下。

+3

旁註:這些都不是有效的類名。類名必須以下劃線,字母(a-z)或短劃線開頭。 http://www.w3.org/TR/CSS21/grammar.html#scanner – madfriend

回答

6

試試這個

$('.2').nextUntil('.8').css('background','#0077C1'); 
+0

..假設div是有序的,但這是正確的。 – madfriend

+0

謝謝,這工作。這是否也要求所有元素都在同一父元素中? – George

+0

不是,這將選擇類2到8之間的所有元素 – Anton

0
<div class="divClass" id="1">Div 1</div> 
<div class="divClass" id="2">Div 2</div> 
<div class="divClass" id="3">Div 3</div> 
<div class="divClass" id="4">Div 4</div> 
<div class="divClass" id="5">Div 5</div> 
<div class="divClass" id="6">Div 6</div> 
<div class="divClass" id="7">Div 7</div> 
<div class="divClass" id="8">Div 8</div> 

$('.divClass').each(function() { 
    var divID = $(this).attr('id'); 
    if(divID >3 && divID<7) 
    { 
     // do something 
    } 
}); 
0

你可以使用.slice()方法來選擇數組中元素的一個子集。但是這不會使用你的css類名。

$('div').slice(2, 6).css('background','#0077C1'); 
0

假設你的問題實際上是關於按類選擇,而不是僅僅通過它們的索引,最好將是一個開始 - 有機結合起來選擇和filter

讓我們假設你的類開始以「C」是有效的類名(C1,C2,等等),那麼你可以選擇你的元素是這樣的:

$('[class^=c]').filter(function(){ 
    var num = parseInt(this.className.slice(1), 10); 
    return num>3 && num<7; 
});