2013-07-18 29 views
11

Tôi muốn lặp lại kết quả của bộ chọn truy vấn.cách lặp lại kết quả của bộ chọn jquery

mã HTML

<nav id="navigation"> 
     <a href="#" tabindex="1" class="active_nav">nav1</a> 
     <a href="#" tabindex="2">nav2</a> 
     <a href="#"tabindex="3">nav3</a> 
</nav> 

khi tôi sử dụng javascript

alert($("#navigation >a")[0]); 

kết quả là thẻ a href thuộc tính Tôi không biết tại sao.

+1

gì đầu ra bạn muốn? –

+0

Bạn có thể sử dụng '.each' http://api.jquery.com/each/ –

+0

@bohan kiểm tra câu trả lời của tôi;) – EpokK

Trả lời

14

Sử dụng $.each

$("#navigation > a").each(function() { 

    console.log(this.href) 
}); 

$('#navigation > a')[0] 
    ^   ^---- Selects the 1st dom object from the jQuery object 
     |     that is nothing but the index of the element among 
     |     the list of elements 
     |------- Gives you children of nav(3 anchor tags in this case) which is a 
       jQuery object that contains the list of matched elements 
+0

tại sao '$ (" # navigation> a ") [0];' trả về href thuộc tính của thẻ đầu tiên không phải là đối tượng dom thứ nhất – bohan

0

Hãy thử sử dụng

console.log($("#navigation >a")) 

thay vào đó, để bạn có thể xem tất cả các kết quả trong giao diện điều khiển (cmd + alt + i trong chrome)

1

Trong jQuery, khi bạn sử dụng chỉ mục như [0], điều đó có nghĩa là bạn đang truy cập phần tử DOM. Đó là lý do tại sao

$("#navigation >a")[0] 

trả về <a> thẻ.

Để lặp một kết quả selector jQuery, sử dụng mỗi

$("#navigation >a").each(function(index, elem){ 
}); 
1

Bạn có thể sử dụng jQuery built-in each() cho lặp này như thế này:

$("#navigation>a").each(function(index){ 
    console.log("I am " + index + "th element."); 
    //and you can access this element by $(this) 
}); 
1

Nếu bạn muốn để lặp tất cả <a> thẻ, bạn có thể sử dụng từng chức năng

$('#navigation >a').each(function() { 
    alert(this.href); 
}); 

và nếu bạn chỉ muốn nhận được <a> thẻ đầu tiên sau đó sử dụng .eq()

alert($('#navigation >a').eq(0).attr('href'); 
+1

$ ("# navigation> a") [0] trả về phần tử DOM. Không sử dụng alert() để xem nó trả về vì nó chỉ hiển thị thuộc tính href. Hãy thử sử dụng phần tử kiểm tra trong Chrome hoặc sử dụng firebug cho firefox. –

3

Sử dụng first() như thế này:

var element = $("#navigation>a").first(); 
console.log(element); 

Reference

+0

nhưng tôi muốn lặp lại toàn bộ không chỉ toàn bộ đầu tiên. và tôi muốn biết tại sao '$ (" # navigation> a ") [0];' trả về thuộc tính href của thẻ đầu tiên. – bohan

+1

Truy vấn của bạn: "Tôi muốn nhận đối tượng DOM đầu tiên nhưng không phải là thuộc tính của đối tượng đầu tiên" – EpokK

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