2010-02-02 170 views
5

我有點困惑如何做到這一點...jQuery - 獲取表中最後一行的輸入字段值?

我有一個表,有一系列的行,並在每個單元格中,有某些表單元素。我試圖從只有最後一排,從「代碼」輸入字段中獲得的價值,並因與語法的麻煩......

簡化表看起來像這樣:

<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> 

而且,這裏是不起作用的jQuery的...

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; 
      }); 
     } 

回答

11

試試這個:

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

或者調整你的代碼:

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

你在你的代碼的兩個錯誤,你必須在$("#cont')部分不匹配的報價和您輸入的搜索是錯誤的。你現在有什麼是:

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

由於>超出報價,這是不是一個字符串,而是一個比較運營商,現在比較tr'input[name="code"]'。比較運算符總是返回布爾值(true或false),所以你有效地這樣做:

$(true).val(); 

這沒什麼意義。如果您有jQuery對象,則可以使用find方法查找該對象的任何子項,或者將該元素作爲上下文傳遞給$()函數。所以,這兩個將工作和是相等的:

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

有實際上是沒有理由保存tr到它自己的變量在你的情況,你可以在短短的一個聲明中獲得的價值,如上圖所示。

+0

非常感謝。併爲解釋! – n00b0101