0

http://medfor.petersenuploads.co.uk/product.php/698/2/clear-ps-honey-jar-with-metal-screw-cap

現在、画面の中央に一連のドロップダウンとタブ (完全な製品リスト) があります。完全な製品リストで製品の 1 つをクリックすると、ドロップダウン リストが更新されます。これには非表示フィールドが含まれます (ケースごとのアイテム)

私がやりたいことは、選択した 3 つのドロップダウンに基づいて (テーブルから) ケースごとのアイテムの値を取得することです。例えば:

100ml、Sterile R、No label を選択 - これは表の 2 行目に一致します。非表示のドロップダウン (ケースあたりのアイテム数) を設定し、正しい製品をバスケットに追加できるように、表から「ケースあたりのアイテム数」の値を取得したいと考えています。

これを行うコードはscript.jsにあります

// Handles changing any drop downs in the product selection area and updates the choosen item based on label names and field values.
$('.product-options select').change(function() {
    $('p.selection-item').text("");
    $('#selection-name').text($('header>h1').text());
    $('.product-options select').each(function (i) {
        $('p.selection-item').append($("label[for='"+$(this).attr("id")+"']").text() + " " + $('option:selected', this).text(), "<br />");

        var tableRow = $(".product-table td").filter(function() {
            return $(this).text() == "50";
            //Needs to match against all drop down values
        }).closest("tr");
        console.log(tableRow);
    });
    $('div.product-selection h2').removeClass('noshow');
    $('div.product-selection p').removeClass('noshow');
    recalcPrice($('#pid').val());
});

テーブルをフィルター処理して 1 つの行を取得し、最後から 2 番目の列の値を取得する必要があります。これどうやってするの?

4

1 に答える 1

1

列/tdの配置が静的であると仮定すると、次のことができます。

var tableRow = $(".product-table tbody tr").filter(function() {
            var
                cap = $("#capacity :selected").text(),
                ster = $("#sterility :selected").text(),
                lbl = $("#labeltype :selected").text();
            return $(this).find("td").eq(0).text() == cap && $(this).find("td").eq(1).text() == ster && $(this).find("td").eq(2).text() == lbl
        });

列/tdの配置が動的である場合は、次の操作を実行できます。

var tableRow = $(".product-table tbody tr").filter(function() {
            var arr = [],
                cap = $("#capacity :selected").text(),
                ster = $("#sterility :selected").text(),
                lbl = $("#labeltype :selected").text();
            $.each($(this).find("td"), function(){
               arr.push($(this).text());//there was a parenthesis missing here.
            });
            return $.inArray(cap, arr) != -1 && $.inArray(ster, arr) != -1 && $.inArray(lbl, arr) != -1;
        });
于 2012-11-07T17:13:53.630 に答える