2012-04-10 18 views
6

Tôi có số div có id là content và tôi muốn lấy các số id của các thành phần div cấp đầu tiên, ví dụ: box1, box2, box3. Điều này có thể giải quyết như thế nào ?Làm thế nào để có được chỉ div cấp đầu tiên?

<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

thể trùng lặp của [Lựa chọn duy nhất yếu tố cấp độ đầu tiên, chứ không phải yếu tố con với tên cùng một nguyên tố] (http://stackoverflow.com/ câu hỏi/2604463/select-only-first-level-element-not-child-elements-với-cùng-nguyên tố-nam) – Curt

+1

Tại sao bạn cần ID? Xin vui lòng cho tôi biết nó không phải như vậy bạn có thể nói '$ ('#' + id)' – Sorpigal

+0

@ Sorpigal tôi sẽ không ngạc nhiên. Số lượng mã dự phòng mà mọi người viết với jQuery là tâm-boggling ... –

Trả lời

6

Sử dụng seelctor > đứa trẻ.

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

Bạn có thể rút ngắn này hơn nữa bằng cách sử dụng map():

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

[Trường hợp kiểm tra nhanh] (http://jsfiddle.net/6RB9y/) :) –

+1

Thx Rory, hiểu nhầm câu hỏi :-P đã xóa nhận xét ngớ ngẩn của tôi :) – Cody

1

Sử dụng:

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

Đây là câu trả lời gây hiểu lầm. $ ("# content> div"). attr ("id") chỉ nhận id của div đầu tiên, không phải tất cả. –

+0

@Chcuk Norris: Đã sửa đổi – kgiannakakis

+0

Và điều gì sẽ trả lại điều này? –

5
$("#content > div") 

Như thế này. Bạn có thể nhận được hàng loạt các div như thế này

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

Xem trong jsfiddle http://jsfiddle.net/DsyzV/

+0

nhờ chuck :) – user1184100

Các vấn đề liên quan