2009-12-11 25 views
41
<table class="checkout itemsOverview"> 
    <tr class="item"> 
     <td>GR-10 Senderos</td> 
     <td><span class="value">15.00</span> €</td> 
     <td><input type="text" value="1" maxlength="2" class="quantity" /></td> 
    </tr> 
    <tr class="item"> 
     <td>GR-10 Senderos<br/>GR-66 Camino de la Hermandad<br/>GR 88 Senderos del Jarama<br/>Camino del Cid</td> 
     <td><span class="value">45.00</span> €</td> 
     <td><input type="text" class="quantity" value="1" maxlength="2"/></td> 
    </tr> 
</table> 

Tôi đã thử với mã tiếp theo để nhận được giá trị và số lượng của mỗi mục.Làm thế nào để lặp lại một hàng bảng với JQuery và truy cập một số giá trị ô?

$("tr.item").each(function(i, tr) { 
    var value = $(tr + " span.value").html(); 
    var quantity = $(tr + " input.quantity").val(); 
}); 

Nó không hoạt động. Ai giúp tôi với?

+2

gì đặc biệt không làm việc cho bạn? –

Trả lời

80
$("tr.item").each(function() { 
    $this = $(this); 
    var value = $this.find("span.value").html(); 
    var quantity = $this.find("input.quantity").val(); 
}); 
+14

Để không lặp lại tất cả các bảng trong trang, tốt hơn để thay thế $ ("tr.item"). Each (...) với $ ('# myTableId> tbody> tr.item'). Each (...) – thedrs

+7

'$ this = $ (this)' làm gì? – qed

+3

@qed lưu trữ giá trị theo ngữ cảnh hiện tại của "this" vào một biến được gọi là $ this. Nếu bạn đang lồng một cuộc gọi lặp lại sau khi gán số lượng, gọi "$ (this)" sẽ không còn là kết quả tương tự nữa. Tôi tin rằng Brian chỉ sử dụng thực hành tiêu chuẩn tốt nhất để tránh sự nhầm lẫn này, nhưng anh ta có thể dễ dàng đặt tên nó là "curRow", v.v. – JWiley

16

làm điều này:

$("tr.item").each(function(i, tr) { 
    var value = $("span.value", tr).text(); 
    var quantity = $("input.quantity", tr).val(); 
}); 
0

thử này

var value = iterate('tr.item span.value'); 
var quantity = iterate('tr.item span.quantity'); 

function iterate(selector) 
{ 
    var result = ''; 
    if ($(selector)) 
    { 
    $(selector).each(function() 
    { 
     if (result == '') 
     { 
     result = $(this).html(); 
     } 
     else 
     { 
     result = result + "," + $(this).html(); 
     } 
    }); 
    } 
} 
Các vấn đề liên quan