2013-12-16 151 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中。”* –

相关问题