0

以前の質問の簡略版。UI マルチセレクター ウィジェットを使用して、製品をクラス別にフィルター処理しています。チェックボックスの値に一致する値がクラスに含まれている場合にのみ、製品が表示されます。チェックボックスが1つだけチェックされている場合は、簡単に実行できます。

ドキュメントには、これを使用してすべてのチェックボックスの値をマップできると書かれています。

var checkedValues = $("select").multiselect("getChecked").map(function(){
   return this.value;   
}).get();

クラスがその配列の少なくとも1つの値と一致する人を除いて、すべての製品を非表示にするにはどうすればよいですか? 出来ますか?これは機能していません:

$('.main article, .error').hide();
$('.main article[class*=' + checkedValues + ']).show();
4

1 に答える 1

4

便利な方法の 1 つは、クラスのリストを取得して、CSS セレクターを次の形式で構築することです。

.class1, .class2, .class3, .etc

あなたの例のようなコードでこれを非常に簡単に行うことができますArray.join:

var selector = $("select").multiselect("getChecked")
                .map(function(){return "." + this.value; })
                .get()
                .join();

次に、jQuery に面倒な作業を任せることができます。

$('.main article').filter(selector).show();
于 2012-09-25T22:14:54.390 に答える