2011-12-27 22 views
13

Tôi có một số hàng bảngNhận thuộc tính href trên jQuery

<tr class="b_row"> 
    <td> 
     <div class="cpt"> 
      <h2> 
       <a href="/ref/ref/1.html">example</a> 
      </h2> 
     </div> 
    </td> 
</tr> 

<!--more elements --> 

<tr class="b_row"> 
    <td> 
     <div class="cpt"> 
      <h2> 
       <a href="/ref/two/23.html">example N</a> 
      </h2> 
     </div> 
    </td> 
</tr> 

tôi cần để có được siêu liên kết trong thuộc tính. Tôi sử dụng kịch bản này

function openAll() 
{ 
    $("tr.b_row").each(function(){ 
    var a_href = $('div.cpt').find('h2 a').attr('href'); 
    alert ("Href is: " + a_href); 
} 

Vấn đề: biến a_href luôn là/ref/ref/1.html

Trả lời

41

Trong vòng lặp bạn nên tham khảo các yếu tố procceded hiện tại, vì vậy viết:

var a_href = $(this).find('div.cpt h2 a').attr('href'); 
5
var a_href = $('div.cpt').find('h2 a').attr('href'); 

phải là

var a_href = $(this).find('div.cpt').find('h2 a').attr('href'); 

Trong dòng đầu tiên, truy vấn của bạn tìm kiếm toàn bộ tài liệu. Trong lần thứ hai, truy vấn bắt đầu từ phần tử tr của bạn và chỉ nhận phần tử bên dưới nó. (Bạn có thể kết hợp find s nếu bạn thích, tôi để lại cho họ tách để minh họa cho điểm.)

1

thêm một tham chiếu đến this, trong đó đề cập tới bạn b_row:

$("tr.b_row").each(function(){ 
    var a_href = $(this).find('div.cpt h2 a').attr('href'); 
    alert ("Href is: "+a_href); 
}); 
0

Sử dụng $(this) cho được những mong muốn thành phần.

function openAll() 
{ 
    $("tr.b_row").each(function(){ 
     var a_href = $(this).find('.cpt h2 a').attr('href'); 
     alert ("Href is: "+a_href); 
    }); 
} 
2

Sử dụng này:

$(function(){ 
    $("tr.b_row").each(function(){ 
    var a_href = $(this).find('div.cpt h2 a').attr('href'); 
    alert ("Href is: "+a_href); 

    }); 
}); 

Xem làm việc bản trình diễn:http://jsfiddle.net/usmanhalalit/4Ea4k/1/