0

クラスfilterを持つ多くの入力があります:

<ul>
<li>
<a><input class="filter" name="filter[manufacturer][]" type="checkbox"> Other (18)</a>
</li>
<li>
<a><input class="filter" name="filter[manufacturer][JOBY]" type="checkbox"> JOBY (2)</a>
</li>
<li>
<a><input class="filter" name="filter[manufacturer][Beurer]" type="checkbox"> Beurer (1)</a>
</li>
<li><a>
<input class="filter" name="filter[manufacturer][Obreey Products]" type="checkbox"> Obreey Products (1)</a>
</li>
</ul>

そして、 JavaScriptまたはJQueryを使用してすべての入力ループし、入力チェックボックスがオンになっている場合はcl.facetFilter(name, name2)関数呼び出す必要があります

たとえば、チェックボックス名がfilter[manufacturer][JOBY]で入力がチェックされている場合、次のように呼び出す必要があります。

cl.facetFilter('manufacturer', 'JOBY');

チェックボックス名フィルター[メーカー] []と入力がチェックされている場合、私は呼び出す必要があります:

cl.facetFilter('manufacturer', '');

手伝ってくれてありがとう

4

5 に答える 5

1

できるよ:

$(".filter:checked").each(function() {
    var name = $(".filter").attr("name");
    name = name.split("[");

    name[1] = name[1].substring(0, name[1].length - 1);
    name[2] = name[2].substring(0, name[2].length - 1);

    cl.facetFilter(name[1], name[2]);
});

デモ: http://jsfiddle.net/tymeJV/MfAsA/ -- デモで func を呼び出すのではなく、結果をログに記録しました。

于 2013-08-29T20:51:36.587 に答える
0

この jQuery は、必要なことを行う必要があります。

$('.filter:checked').each(function(index, elem) {
    elem = $(elem);
    var result = elem.attr('name').match(/\[[a-zA-Z0-9 ]*\]/g);
    if (result.length == 2) { // Sanity check
        cl.facetFilter(result[0], result[1]);
    }
});

セレクターの:checked部分は、チェックされていない入力ボックスを除外する必要があり、正規表現の一致により、2 組の括弧内の値が選択される必要があります。ただし、その表記が必要ない場合はfilter|manufacturer|JOBY、区切り文字で単純な .split() を実行できるように、より単純な書式設定 (例: ) をお勧めします。

于 2013-08-29T20:54:41.073 に答える
0
$("input.filter:checked").each(function() {
    var parts = /\[(.*)\]\[(.*)\]/g.exec(this.name);
    cl.facetFilter(parts[1], parts[2]);
});
于 2013-08-29T22:10:42.840 に答える
0

テストされていませんが、最も単純に私が提案するのは次のとおりです。

$('.filter').each(function () {
    var self = this;
    if (self.checked && self.name) {
        var names = self.name.match(/\[(.+)\]/)[1].split('][');
        c1.facetFilter(names[0],names[1]);
    }
});

JS フィドルのデモ

デモでは、明らかに、別の関数名を使用し、チェックボックスをチェックするように設定しています(デモンストレーションの目的で)。

参考文献:

于 2013-08-29T20:47:40.180 に答える