属性フィルタに基づいて、ページ上でdivを表示/非表示したいと考えています。私は複数の値を持つことができるいくつかの属性を作った。ユーザーは表示したいものを選択することができます。複数の属性と複数の属性値に基づいて要素を表示/非表示するにはどうすればよいですか?
私は正しいalgorythmを得ることができません(または私はJavascript/jQuery
機能を使用することができません)。以下は明らかに機能しません。私は最初にすべてのアイテムを表示していて、フィルタにループして、属性と一致しないものを隠します(読み込み:ループの現在の属性)。これは、後で属性に一致する可能性があるにもかかわらず、項目が非表示になることを意味します。
このフィルタメカニズムの動作を後で選択した属性に基づいて非表示にする必要はありませんループ?属性が('div[group=firstgroup|thirdgroup]')
を選択して使用できるOR演算子がありますか?
Javascriptを:
$(document).ready(function() {
var items = $('#items').find('div');
$(items).show();
var groupsToShow = Array('firstgroup','thirdgroup');
var namesToShow = Array('Fred','Pete');
var applicationsToShow = Array('light');
for(var i=0;i<groupsToShow;i++) {
$(items).find('div[group!='+groupsToShow[i]+']').hide();
}
for(var i=0;i<namesToShow;i++) {
$(items).find('div[name!='+namesToShow[i]+']').hide();
}
for(var i=0;i<applicationsToShow;i++) {
$(items).find('div[application!='+applicationsToShow[i]+']').hide();
}
});
HTMLコード:
<div id="items">
<div group="firstgroup" name="Rob" application="special"></div>
<div group="firstgroup" name="Fred" application="light"></div>
<div group="secondgroup" name="Pete" application="special"></div>
<div group="thirdgroup" name="Pete" application="special"></div>
<div group="thirdgroup" name="Pete" application="light"></div>
<div group="secondgroup" name="Pete" application="normal"></div>
<div group="thirdgroup" name="Pete" application="special"></div>
</div>
私はあなたが私の必要を持っていると思います。私は試してみるつもりです、ちょっとだけ教えてください。 – Ropstah
魅力的な作品!とても感謝しています! – Ropstah