在jQuery的.closest()中使用类名

ben*_*e89 32 math jquery class closest

我正在尝试为"运行总计"做一些计算,这是我的代码:

$('.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();
            });     
Run Code Online (Sandbox Code Playgroud)

.quantity_input是一个输入,.price是产品的价格,.cost_of_items是我想要更新项目总成本的地方,即.item1 =£5 x 3 quantity = 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>');
Run Code Online (Sandbox Code Playgroud)

编辑:

工作方案:

$('.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();
            });     
Run Code Online (Sandbox Code Playgroud)

SLa*_*aks 59

您需要.cost_of_items<tr>包含中找到this:

$(this).closest('tr').find('.cost_of_items')
Run Code Online (Sandbox Code Playgroud)


Kei*_*eau 6

最近的将找到最近的祖先(父,祖父母),但您需要进行查找才能找到要更新的正确元素.例如,如果表行中有元素,并且在同一行中需要另一个元素:

$('.myElement').closest('tr').find('.someOtherElement');
Run Code Online (Sandbox Code Playgroud)

编辑:

在你的情况下,你会想要的

$(this).closest('tr').find('.cost_of_items').text(totalTotal.toFixed(2));
Run Code Online (Sandbox Code Playgroud)