在PHP foreach中添加jQuery添加行的计数

时间:2015-10-30 09:41:10

标签: php jquery loops foreach

我正在开发一个电子商务购物车,它通过PHP foreach()循环构建产品,在<tr>中添加每个产品。 这个商店有'捆绑'产品,这意味着有几个<tr>属于一个大产品。

客户要我编辑购物车视图,添加一些东西,移动一些。所以我使用jQuery在每个头项之后添加(即)一个图例,如下所示:

<tr>---- Item ----</tr>
    <tr>Added row</tr>
    <tr>Detail</tr>
    <tr>Detail</tr>

<tr>---- Item ----</tr>
    <tr>Added row</tr>
    <tr>Detail</tr>
    <tr>Detail</tr>
    <tr>Detail</tr>

<tr>---- Item ----</tr>
    <tr>Added row</tr>
    <tr>Detail</tr>
    <tr>Detail</tr>
    <tr>Detail</tr>
    <tr>Detail</tr>

现在,由于种种原因,我需要确定每组产品。我通过在每个头项中添加$i计数来实现此目的。 问题是添加的行是由jQuery在foreach循环之外创建的,所以没有$i计数就像其余的一样,结果如下:

<tr class="head_1">---- Item ----</tr>
    <tr>Added row</tr>
    <tr class="detail_1">Detail</tr>
    <tr class="detail_1">Detail</tr>

<tr class="head_2">---- Item ----</tr>
    <tr>Added row</tr>
    <tr class="detail_2">Detail</tr>
    <tr class="detail_2">Detail</tr>
    <tr class="detail_2">Detail</tr>

<tr class="head_3">---- Item ----</tr>
    <tr>Added row</tr>
    <tr class="detail_3">Detail</tr>
    <tr class="detail_3">Detail</tr>
    <tr class="detail_3">Detail</tr>
    <tr class="detail_3">Detail</tr>

我需要的是在类中添加相同的计数到添加的jQuery行。我对任何人都不知道怎么办?

Moar详情 我使用jQuery('tr.head').after()添加行,如下所示:

jQuery( ".mainitem" ).after( "\
    <tr class='addedrow'>\
        <td class='product-remove'></td>\
        <td class='product-thumbnail'></td>\
        <td class='product-name'></td>\
        <td class='product-price'></td>\
        <td class='product-quantity'></td>\
        <td class='product-subtotal'></td>\
    </tr>" 
);

并认为我可以得到这样添加的行的计数:var $rowcount = jQuery(".addedrow").length;

3 个答案:

答案 0 :(得分:2)

这可能是最简单的解决方法:我将此添加到添加了行的jQuery脚本中,并且它有效:)

is_test

虽然给出的答案似乎都是正确的,但需要我在代码中使用的不同结构。谢谢大家让我走上正轨!

答案 1 :(得分:1)

jQuery('tr.head').after(function() {
    var current = this.prop('className');  
    var arr = current.split('_');
    return "<tr class='"+arr[1]+"'>" + Added row + "</tr>";
});

答案 2 :(得分:1)

这对你有用吗?在var中定义head项,然后你可以拆分该类来获取id。如果有多个,你可以像这样使用jquery的.each():

jQuery( ".mainitem" ).each(function(){
var mainItem = $(this);
var id = mainItem.attr("id").split("_")[1];
mainItem.after( "\
    <tr class='addedrow groupid_"+ id +"'>\
        <td class='product-remove'></td>\
        <td class='product-thumbnail'></td>\
        <td class='product-name'></td>\
        <td class='product-price'></td>\
        <td class='product-quantity'></td>\
        <td class='product-subtotal'></td>\
    </tr>" 
);
});

这当然是假设你的标题tr将mainitem作为类,哦这可能会导致问题,因为我们正在拆分下划线,而类会像“mainitem header_1”一样,这样可行,但如果它是“ header_1 mainitem“我们需要改变。但你可以拆分空间并使用正确的空间。

必须添加,这一切都感觉有点脏:)所以你可能最好将header_1添加为id,这样你就可以确定它没有嵌套多个类,或者使用data-header-id属性,更清洁。