2015-10-08 18 views
6

Tôi có liên kết thành lập như sau:

HTML:

<a href="www.example1.com" class="some-link"> 
<a href="www.example2.com" class="some-link"> 
<a href="www.example3.com" class="some-link"> 
<a href="www.example4.com" class="some-link"> 

Tôi muốn nhận được href s rằng các thẻ <a> chứa. Tôi cố gắng để lặp qua mỗi liên kết như sau:

Javascript/jQuery:

for (x=0; x < 5; x++) { 
    link = $(".some-link")[x].attr("href"); 
    console.log(link); 
} 

Khi tôi cố gắng này, tôi nhận được lỗi TypeError: $(...)[x].attr is not a function. Vấn đề là gì? Cảm ơn.

Trả lời

11

Bạn cần phải sử dụng eq() ở đây, vì $(".some-link")[x] lợi nhuận đối tượng dom attr() phương pháp duy nhất có thể sử dụng với đối tượng jQuery. Vì vậy, bạn nee sử dụng eq(x) hoặc :eq()

for (x=0; x < 5; x++) { 
 
    link = $(".some-link").eq(x).attr("href"); 
 
    console.log(link); 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<a href="www.example1.com" class="some-link"> 
 
<a href="www.example2.com" class="some-link"> 
 
<a href="www.example3.com" class="some-link"> 
 
<a href="www.example4.com" class="some-link"> 
 
<a href="www.example4.com" class="some-link">

hoặc bạn có thể sử dụng each() phương pháp thay

$(".some-link").each(function(){ 
 
    var link=$(this).attr("href"); 
 
    console.log(link); 
 
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<a href="www.example1.com" class="some-link"> 
 
<a href="www.example2.com" class="some-link"> 
 
<a href="www.example3.com" class="some-link"> 
 
<a href="www.example4.com" class="some-link"> 
 
<a href="www.example4.com" class="some-link">

hoặc cách đơn giản hơn sử dụng attr() với callback

$(".some-link").attr("href",function(i,link){ 
 
    console.log(link); 
 
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<a href="www.example1.com" class="some-link"> 
 
<a href="www.example2.com" class="some-link"> 
 
<a href="www.example3.com" class="some-link"> 
 
<a href="www.example4.com" class="some-link"> 
 
<a href="www.example4.com" class="some-link">

1

Các [1] indexer (tương đương với .get()) không trả lại một yếu tố jQuery, nhưng một yếu tố DOM. Hãy thử

var link = $(".some-link").eq(x).attr("href"); 

Một lưu ý phụ, bạn có thể muốn khai báo biến của mình bằng cách sử dụng var.

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