我正在尝试对“运行总计”进行一些计算,这是我的代码:
$('.quantity_input').live('change',function(){
var ValOne = parseFloat($(this).val());
var ValTwo = parseFloat($(".price").text())
var totalTotal = ((ValOne) * (ValTwo));
$('.cost_of_items').closest('.cost_of_items').text(totalTotal.toFixed(2));
calcTotal();
});
.quantity_input是输入,.price是产品的价格,.cost_of_items是我想要更新项目的总成本的地方,即。 item1 =£5 x 3数量= item1总共15英镑 calcTotal()是一个只更新订单总成本的函数。问题是将所有数学保存在表的一行中,即我在上面的代码中进行计算并且它没有坚持它的行,它用类.cost_of_items等更新所有字段......
显示我的html的问题是它是由jQuery动态添加的.appends()但这里是相关的jQuery:
$('#items').append('<tr class="tableRow"><td><a class="removeItem" href="#"><img src="/admin/images/delete.png"></img></a><td class="om_part_no">' + omPartNo + '</td><td>' + supPartNo + '</td><td>' + cat + '</td><td class="description">' + desc + '</td><td>' + manuf + '</td><td>' + list + '</td><td>' + disc + '</td><td><p class="add_edit">Add/Edit</p><input type="text" class="quantity_input" name="quantity_input" /></td><td class="price_each_nett price">' + priceEach + '</td><td class="cost_of_items"></td><td><p class="add_edit">Add/Edit</p><input type="text" class="project_ref_input" name="project_ref_input" /><p class="project_ref"></p></td></tr>');
编辑:
工作解决方案:
$('.quantity_input').live('change',function(){
var ValOne = parseFloat($(this).val());
var ValTwo = parseFloat($(this).closest('tr').find('.price').text())
var totalTotal = ((ValOne) * (ValTwo));
$(this).closest('tr').find('.cost_of_items').text(totalTotal.toFixed(2));
calcTotal();
});
答案 0 :(得分:58)
您需要在包含.cost_of_items
的{{1}}中找到<tr>
:
this
答案 1 :(得分:6)
最近将找到最近的祖先(父,祖父母),但您需要进行查找才能找到要更新的正确元素。例如,如果表行中有元素,并且在同一行中需要另一个元素:
$('.myElement').closest('tr').find('.someOtherElement');
编辑:
在您的情况下,您需要
$(this).closest('tr').find('.cost_of_items').text(totalTotal.toFixed(2));
答案 2 :(得分:3)
我不会使用.find()
。我猜测使用jQuery's .siblings()
method遍历最近<td>
并使用<td>
类获取兄弟.cost_of_items
可能会更有效率。
$(this).closest('td').siblings('.cost_of_items');
编辑:为了澄清,这是.append()
的标记:
<tr class="tableRow">
<!-- NOTE THAT THE CLOSING </td> IS MISSING FOR THE FIRST <td> -->
<td><a class="removeItem" href="#"><img src="/admin/images/delete.png"></img></a>
<td class="om_part_no">' + omPartNo + '</td>
<td>' + supPartNo + '</td>
<td>' + cat + '</td>
<td class="description">' + desc + '</td>
<td>' + manuf + '</td>
<td>' + list + '</td>
<td>' + disc + '</td>
<!-- TRAVERSE TO HERE -->
<td>
<p class="add_edit">Add/Edit</p>
<!-- START HERE -->
<input type="text" class="quantity_input" name="quantity_input" />
</td>
<td class="price_each_nett price">' + priceEach + '</td>
<!-- SIBLING IS HERE -->
<td class="cost_of_items"></td>
<td><p class="add_edit">Add/Edit</p><input type="text" class="project_ref_input" name="project_ref_input" /><p class="project_ref"></p></td>
</tr>
答案 3 :(得分:-2)
您不需要使用find。 closest
takes a context argument。这可以帮助您缩小搜索范围。你应该使用它。