2012-04-10 22 views
6

Mam div z identyfikatorem content i chcę uzyskać id elementów pierwszego poziomu div, np. box1, box2, box3. Jak to zrobić?Jak zdobyć tylko divy pierwszego poziomu?

<div id="content"> 
    <div id="box1" class="box1class"> 
     <div>...</div> 
    </div> 
    <div id="box2" class="box1class"> 
     <div>...</div> 
    </div> 
    <div id="box3" class="box1class"> 
     <div>...</div> 
    </div> 
</div> 
+0

możliwe duplikat [Wybór elementu tylko pierwszy poziom, a nie elementy potomne o takiej samej nazwie elementu] (http://stackoverflow.com/ pytania/2604463/wybierając-tylko-pierwszy-poziom-element-nie-dziecko-elementy-z-tym-elementem-nam) – Curt

+1

Dlaczego potrzebujesz identyfikatorów? Proszę powiedz mi, że nie, możesz powiedzieć '$ ('#' + id)' – Sorpigal

+0

@Sorpigal Nie byłbym zaskoczony. Ilość redundantnego kodu, który ludzie piszą z jQuery, jest zadziwiająca ... –

Odpowiedz

6

użyć seelctor > dzieci.

var ids = []; 
$("#content > div").each(function() { 
    ids.push(this.id); 
}); 

Można skrócić ten dodatkowo za pomocą map():

var ids = $("#content > div").map(function() { 
    return this.id; 
}).get(); 
+0

[Szybki przypadek testowy] (http://jsfiddle.net/6RB9y/) :) –

+1

Thx Rory, niezrozumiałe pytanie :-P skasowałem mój głupi komentarz :) – Cody

1

Zastosowanie:

$("#content > div").each(function() { 
    var divId = this.id; 
}); 
+3

To jest myląca odpowiedź. $ ("# content> div"). attr ("id") pobiera tylko pierwszy identyfikator div, nie wszystkie. –

+0

@Chuk Norris: poprawiono – kgiannakakis

+0

Co zwróci? –

5
$("#content > div") 

jak ten. Można uzyskać tablicę div wygląda tak

var array = $("#content > div").map(function(){ 
     return this.id; 
    }).get(); 

zobaczyć w jsfiddle http://jsfiddle.net/DsyzV/

+0

dzięki Chuck :) – user1184100

Powiązane problemy