2010-02-02 37 views
5

Tôi hơi bối rối về cách thực hiện việc này ...jQuery - nhận giá trị trường nhập từ hàng cuối cùng trong bảng?

Tôi có một bảng có hàng loạt hàng và trong mỗi ô, có một số yếu tố biểu mẫu nhất định. Tôi đang cố gắng để có được giá trị từ "code" trường nhập từ chỉ hàng cuối cùng, và đang gặp rắc rối với các cú pháp ...

bảng Giản trông như thế này:

<table id="table1"> 
<tr><td><input type="hidden" name="code" value="XFT" /></td></tr> 
<tr><td><input type="hidden" name="code" value="ETY" /></td></tr> 
<tr><td><input type="hidden" name="code" value="DHQ" /></td></tr> 
</table> 

Và, đây là jquery đó không làm việc ...

if($('#cont')) { 
      $("#cont').live('click', function(event) { 
       var tr = $('#wr-viewcarttable tr:last'); 
       var itemcode = $(tr > 'input[name="code"]').val(); 
       window.location = "/search?p="+itemcode; 
      }); 
     } 

Trả lời

11

Hãy thử điều này:

$('table#table1 tr:last input[name=code]').val(); 

Hoặc, điều chỉnh mã của bạn:

$('#cont').live('click', function(event) { 
    var tr = $('#wr-viewcarttable tr:last'); 
    var itemcode = tr.find('input[name=code]').val(); 
    window.location = "/search?p="+itemcode; 
}); 

Bạn có hai lỗi trong mã của mình, bạn có dấu ngoặc kép không khớp trong phần $("#cont') và tìm kiếm nhập sai. Những gì bạn có bây giờ là:

$(tr > 'input[name="code"]').val(); 

Khi > là dấu ngoặc kép bên ngoài, nó không phải là một chuỗi, nhưng một toán tử so sánh, mà bây giờ so sánh tr để 'input[name="code"]'. Toán tử so sánh luôn trả về giá trị boolean (đúng hoặc sai), vì vậy bạn đang thực hiện điều này một cách hiệu quả:

$(true).val(); 

Điều này không có ý nghĩa nhiều. Nếu bạn có một đối tượng jQuery, bạn có thể sử dụng phương thức find để tìm bất kỳ trẻ em nào của đối tượng đó, hoặc cách khác chuyển phần tử đó làm ngữ cảnh cho hàm $(). Vì vậy, hai người sẽ làm việc và đều bình đẳng:

tr.find('input[name=code]').val(); 
$('input[name=code]', tr).val(); 

Có thực sự không có lý do gì để lưu tr để biến riêng của nó trong trường hợp của bạn, như bạn có thể nhận được giá trị chỉ trong một tuyên bố, như trình bày ở trên.

+0

Cảm ơn vì điều này. Và để giải thích! – n00b0101

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