私は「実行中の合計」のためにいくつかの計算をしようとしています、これは私のコードです:
$('.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()は、注文の合計コストを更新するだけの関数です。問題は、すべての数学をテーブルの1行に保持することです。つまり、上記のコードで計算を実行し、その行に固執せず、クラス.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();
});
this
を含む.cost_of_items
で<tr>
を見つける必要があります。
$(this).closest('tr').find('.cost_of_items')
最も近いものは、最も近い祖先(親、祖父母)を見つけますが、更新する正しい要素を見つけるために、検索を行う必要があります。たとえば、テーブル行に要素があり、その同じ行に別の要素が必要な場合:
$('.myElement').closest('tr').find('.someOtherElement');
編集:
あなたの場合、あなたは望むでしょう
$(this).closest('tr').find('.cost_of_items').text(totalTotal.toFixed(2));
.find()
は使用しません。 jQueryの.siblings()
メソッド を使用して、最も近い<td>
に到達し、<td>
クラスで兄弟の.cost_of_items
を取得する方がおそらくもう少し効率的だと思います。
$(this).closest('td').siblings('.cost_of_items');
EDIT:明確にするために、.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>