2013-12-16 200 views
-1

我試圖選擇具有某個條件(例如,.some_class) 之後的某個元素的第一個元素。我不知道元素之間的關係,他們可能是兄弟姐妹,堂兄弟,無論如何,我只知道他們都在這個#容器中。如何在某個元素之前和之後選擇某個元素

HTML代碼:

<div id="container"> 
    <div class="subcontainer"> 
     <div id="before" class="some_class"> 
     </div> 
    </div> 
    <div id="this" class="some_class"> 
    <div> 
    <div class="subcontainer"> 
     <div class="subcontainer"> 
      <div id="after" class="some_class"> 
      </div> 
     </div> 
    </div> 
... 
</div> 

鑑於與類「some_class」(在這種情況下#this)的元素,我想找到「some_class」元素將立即之前(在#before DIV)或之後( div)表示元素。

+0

嘗試$(」。some_class ')。後()或$('。some_class')。()之前 – anand4tech

+0

純CSS之前,你無法選擇一個元素,但你可以使用.class + .element選擇元素{} –

+0

當然我會編輯問題以使其更清晰 – Bogdan

回答

1

你可以這樣做:

var all = $('#container .some_class'); 
var before = all.slice(0, all.index(yourElement)); 
var after = all.slice(all.index(yourElement)+1); 

Demonstration(打開控制檯)

+0

是的,這個工程。所以參與尋找純粹的jQuery解決方案,我沒有想到使用數組函數。謝謝 – Bogdan

+0

@Bogdan [那些不是陣列功能;]](http://api.jquery.com/slice/) –

+0

你明白我的意思...無論如何,你會怎麼稱呼他們?另外,我只是使用了所有的[index-1]和所有的[index + 1],因爲我特別想要下一個和上一個元素。 – Bogdan

0

對於圍繞 「some_class」 元素的所有節點嘗試,

$("#this").siblings().css("background-color", "red"); 

在接下來的元素,

$("#this").next().css("background-color", "red"); 

而對於前一個元素

$("#this").prev().css("background", "yellow"); 
+0

*「我不知道元素之間的關係,他們可能是兄弟姐妹,表兄弟,無論如何,我只知道他們都在這個#container中。」* –

相關問題