2010-07-08 127 views
4

我試圖使用最接近的表單元素值。這裏有一些示例代碼。jquery最接近元素值

<table> 
    <tr> 
    <td>Hour <input type="input" value="12" name="data[hour]" class="hour" /></td> 
    <td>Minute <input type="input" value="12" name="data[minute]" class="minute" /></td> 
    <td><a href="#" class="add-data">Add Row</a></td> 
    </tr> 
</table> 

見我不能序列化的形式,因爲它是一個大表格的一部分,所以我需要搶最接近每個輸入添加行鏈路的喲將能夠添加多行。

我已經試過

var hour = $(this).closest('.hour').val();  
var hour = $(this).closest('input', '.hour').val(); 
var hour = $(this).closest('input[name="data[hour]]").val(); 

任何想法如何,我可以得到的表單值?

在此先感謝

回答

13

假設你有每個TR只是一個.hour元素,這將做到這一點:

var hour = $(this).closest('tr').find('.hour').val(); 

closest會:

把那 匹配的第一個祖先元素選擇器,從 當前元素開始,並通過DOM樹向上推進 。

所以,你需要去tr,並從那裏找到.hour後代。

+0

那是一個完美的。謝謝 – Lee 2010-07-08 16:12:15

+0

精彩回答karim謝謝了:) – 2013-11-20 22:11:38

1

要擴大Karim79的回答是:

.closest(),直到它找到一個匹配向上移動DOM樹。它不適用於同一級別的元素 - 比如你的情況(所有元素都有一個td作爲父級)。

http://api.jquery.com/closest/

要使用最接近()在你的情況,你不得不使用(這是一個有點矯枉過正這裏):

$(this).closest("tr").find(".hour").val();