使用类查找当前表行中的输入字段

时间:2010-01-30 21:18:12

标签: jquery forms

我正在开一家书店,想要添加一个花哨的jQuery订单。关键是用户应选择带有减号和加号按钮的书籍数量,然后让JavaScript计算该书的总和。

我有一个标记如下:

  <tr>
    <td><p>Book title</p></td>
    <td><p><a href="#" class="bookDecrement">-</a><input type="text" class="bookQuantity disabled" disabled /><a href="#" class="bookIncrement">+</a></p></td>
    <td><p><input type="text" class="bookPrice disabled" value="70" disabled /></p></td>
    <td><p>=</p></td>
    <td><p><input type="text" class="bookTotal disabled" disabled /></p></td>
  </tr>

如何使用jQuery访问此行中的bookPrice和bookTotal类?由于我有多个书名,我只需要访问当前行中的输入文件。

谢谢!

2 个答案:

答案 0 :(得分:23)

这应该这样做:

$('.bookDecrement, .bookIncrement').click(function() {

    // Get the current row
    var row = $(this).closest('tr');

    // Determine if we're adding or removing
    var increment = $(this).hasClass('bookDecrement') ? -1 : 1;

    // Get the current quantity
    var quantity = parseInt(row.find('.bookQuantity').val(), 10);
    // Adjust the quantity
    quantity += increment;
    // Quantity must be at least 0
    quantity = quantity < 0 ? 0 : quantity;

    // Get the price
    var price = parseFloat(row.find('.bookPrice').val());

    // Adjust the total
    row.find('.bookTotal').val(quantity * price);

    // Return false to prevent the link from redirecting to '#'
    return false;
});

答案 1 :(得分:13)

你可以到达祖先tr并再次下降到其中的输入。像这样:

$("a.bookIncrement").click(function() {
    $(this).closest("tr").find("input.bookPrice").doSomething();
});