2016-01-21 96 views
0

我試圖在單擊名爲RoomTypes[0].RoomOptionId的單選按鈕時,名稱爲Promotion_26615的文本框的值。JQuery Selector Table Cells

我試過幾個選擇器,但沒有任何工作。例如:

$('.radio').click(function() { 
    var t = $(this)prev().prev().prev().prev().find("input[name*=Promotion_]").val(); 
}); 

和HTML:

<tbody> 
    <tr> 
    <td class="roomtypeheader"><b>Free Nights - Stay 7 Pay 6 (Double Reethi)</b></td> 
    <td data-title="Room Type" class="roomtypeheader">Reethi Villa</td> 
    <td data-title="Board Type" class="roomtypeheader">Bed &amp; Breakfast</td> 
    <td data-title="Price" class="roomtypeheader">$816.00 pp</td> 
    <td data-title="Select" class="roomtypeheader"> 
     <div class="radio"> 
     <label> 
      <input type="radio" name="RoomTypes[0].RoomOptionId" value="a3fb34ee-4ec2-41cc-a093-be25ba75b0c9"> 
      <input type="hidden" name="RoomOptionPrice" value="816"> 
      <input type="hidden" name="RoomOptionChildPrice" value="0"> 
      <input type="hidden" name="NumberOfAdults" value="1"> 
      <input type="hidden" name="NumberOfChildren" value="0"> 
      <span class="hidden">option1</span> 
     </label> 
     </div> 
    </td> 
    </tr> 
    <tr> 
    <td></td> 
    <td>Honeymoon Offer</td> 
    <td></td> 
    <td>$72.00</td> 
    <td><input type="checkbox" name="Promotion_26615" value="72.0000" /></td> 
    </tr> 

回答

0

我會使用:

var t = $(this).closest('tr').next().find("input[name*=Promotion_]").val(); 

jsFiddle example

.prev()將無法​​正常工作,因爲選擇前一個兄弟,你需要一個祖先(其中.closest().parent().parents()會選擇)。

+0

這幾乎可以工作,但是當我添加一個新行時,所有的促銷活動都被選中。我只想要接下來三行的促銷 –

+0

添加一個新行不是你問題的一部分。 – j08691

0

看起來你已經有了一個錯字在你的代碼:

$(this)prev()在一開始應該讀$(this).prev()(缺少句號/期間)

我想如果您在運行代碼的任何瀏覽器中使用JavaScript控制檯,您將看到語法錯誤。

假設你的代碼的prev()prev().prev().prev().prev()一部分是用於遍歷DOM回父form元素,下面會更合適:

$('.radio').click(function() { 
    var t = $(this).parents('form').find('input[name*="Promotion_"]').val(); 
}); 
0

您可以父行的兄弟姐妹中找到:

 
var t = $(this).parents('tr').siblings().find("input[name*=Promotion_]").val();