JQuery选择器表单元

时间:2016-01-21 16:43:54

标签: jquery html-table selector

当点击名为Promotion_26615的单选按钮时,我正在尝试获取名为RoomTypes[0].RoomOptionId的文本框的值。

我尝试了几种选择器,但没有任何效果。例如:

$('.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>

3 个答案:

答案 0 :(得分: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();
});

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

我会用:

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

<强> jsFiddle example

.prev()无效,因为它会选择上一个兄弟,而您需要一个祖先(.closest().parent().parents()会选择)。