在具有相同类的每个表上运行 jquery

Run jquery on each table with same classes

本文关键字:运行 jquery 同类      更新时间:2023-09-26

我正在生成多个表,我正在计算每个表的列总数。

以下内容非常适合第一个表,但是如果我删除":first",那么它会给我所有表的总和,这是我不想要的。

var total = 0;
jQuery('table.views-table:first td.views-field-qty').each(function()
{
    var price = parseInt(jQuery(this).text());
    if (!isNaN(price))
    {
        total += price;
    }
});
jQuery('table.views-table:first').after('<p> Total Tickets Sold: <strong>' + total + '</strong></p>');

当所有类和 td 类都相同时,我如何为每个表执行上述操作,并在每个表下都有一个摘要。对表类进行编号不好,因为可能有任何数量。

表包装在 .each 循环中

jQuery('table.views-table').each(function(i,el){
    var table = jQuery(el);
    var total = 0;
    table.find('td.views-field-qty').each(function()
    {
        var price = parseInt(jQuery(this).text());
        if (!isNaN(price))
        {
            total += price;
        }
    });
    table.after('<p> Total Tickets Sold: <strong>' + total + '</strong></p>');
});

您需要修改逻辑,以便对表调用each(),然后在该表中的每个td上再次调用。试试这个:

jQuery(function($) {
    $('table.views-table').each(function() {
        var $table = $(this), total = 0;
        $table.find('td.views-field-qty').each(function() {
            total += parseInt(jQuery(this).text(), 10) || 0;
        });
        $table.after('<p> Total Tickets Sold: <strong>' + total + '</strong></p>');
    });
});

请注意,您可以通过使用 || 运算符作为为变量提供默认值的快捷方式来消除对 if 语句的需求。