2013-09-16 58 views
1

一些輸入字段,我有以下HTML格式:連載只有從父DIV

<div class="product"> 
... 
</div> 
... 
(n-th row elements) 
<div class="product"> 
    <div class="control-group"> 
     <label>Name</label> 
     <input type="text" value="T-Shirt Greenday" name="name[]"> 
    </div> 
    <div class="control-group"> 
     <label>Quantity</label> 
     <input type="text" value="3" name="quantity[]"> 
    </div> 
    <div class="control-group"> 
     <a href="#" class="remove">Remove</a> 
    </div> 
</div> 
... 

我怎麼能得到的只有從第n行的輸入字段和jquery的序列呢? (我試過這樣的事情:parent().parent().siblings('.control-group').children(':input').serialize(),但沒有成功)

謝謝。

+0

你看過http://api.jquery.com/nth-child-selector/,然後將其與http://api.jquery.com/serialize/ – Vinod

+0

結合,你是否在嘗試做這個點擊「刪除」? – CodeGodie

回答

0

您可能會從.remove事件處理程序中調用此代碼 - 但是,您有一個.parent()調用太多,而代之以獲得div.product。這個元素的唯一可見的兄弟姐妹是div.product,他們沒有:input孩子 - 所以你最終會得到一個空的jQuery對象,而且這個對象很難正確序列化。 )

當然,您可以通過刪除不需要的.parent()調用來修復它。這是有利的,但是,要擺脫掉這條產業鏈的parent()完全,與.closest()替換它:

$('.remove').click(function() { 
    var serializedRow = $(this).closest('.product').find(':input').serialize(); 
    console.log(serializedRow); 
    // ... 
    return false; 
}); 

JSFiddle

這個開關的關鍵優勢是能夠調整內部div.product(例如爲控制組添加另一個包裝)而不用觸摸closest-使用方法。此外,.closest(some_class)顯示你的真實意圖比.parent() s更清晰。 )

+0

是的,它的工作原理!這就是我要的!感謝您的額外提示。 – Anna