我正在嘗試爲商店列出一個簡單的jQuery產品過濾器,該過濾器列出了一個頁面上的所有類別的產品。由於商店的設置方式,這無法通過AJAX實現。jQuery產品過濾器使用複選框和:contains()顯示/隱藏
簡而言之,該類別的所有產品都在一個頁面上。他們有不同品牌的產品名稱和團隊名稱。標記看起來像這樣(最後的形式是我打算如何做這個過濾器)。
<div id="CategoryContent">
<ul>
<li class="product">Brand1 PRODUCT1 TeamA</li>
<li class="product">Brand1 PRODUCT2 TeamB</li>
<li class="product">Brand2 PRODUCT3 TeamB</li>
<li class="product">Brand2 PRODUCT4 TeamC</li>
<li class="product">Brand3 PRODUCT5 TeamA</li>
<li class="product">Brand3 PRODUCT6 TeamD</li>
<li class="product">Brand4 PRODUCT7 TeamD</li>
<li class="product">Brand1 PRODUCT8 TeamA</li>
<li class="product">Brand1 PRODUCT9 TeamA</li>
<li class="product">Brand1 PRODUCT10 TeamB</li>
<li class="product">Brand4 PRODUCT11 TeamD</li>
<li class="product">Brand2 PRODUCT12 TeamA</li>
</ul>
<div style="clear:both;"></div>
<div class="filter">
<form id= "brandfilter" action="">
<h2>Brands:</h2>
<input type="checkbox" name="brand" value="Brand1"/>Brand1 </br>
<input type="checkbox" name="brand" value="Brand2"/>Brand2 </br>
<input type="checkbox" name="brand" value="Brand3"/>Brand3 </br>
<input type="checkbox" name="brand" value="Brand1"/>Brand4 </br>
</form>
<form id="teamfilter" action="">
<input type="checkbox" name="team" value="TeamA"/>TeamA </br>
<input type="checkbox" name="team" value="TeamB"/>TeamB </br>
<input type="checkbox" name="team" value="TeamC"/>TeamC </br>
<input type="checkbox" name="team" value="TeamD"/>TeamD </br>
</form>
我發現這個過濾器的工作原理是我想要的。在控制檯替換隱藏與顯示和品牌2 Brand2,TeamA等工作得很好。
$("#CategoryContent li").not(
$("#CategoryContent li:contains(Brand1)")
).hide();
下一個步驟是獲得一個雙過濾器的工作原理,以及:
$("#CategoryContent li").not(
$("#CategoryContent li:contains(Brand1):contains(TeamA)")
).hide();
我對得到這個工作的問題是雙重的。 1正在用變量(因此是formids)取代Brand1/Team A。
第二個嘗試在單擊複選框時運行腳本。它應該工作,如果任何一個被點擊,如果兩者都被點擊(這意味着上面的腳本需要通過顯示全部然後隱藏來重置)。
目前啓動它我運行這個腳本,但我遇到了問題,所以我已經回到只有1個過濾器。
$("input:checkbox[name='brand']").click(function() {
var brandfilter = $(this).val();
alert (brandfilter);
$("#CategoryContent li:contains(' + brandfilter + ')").parent().hide();
});
彈出的警告就是我想要的(即Brand1),但隱藏功能後不工作,當我再次alert (brandfilter)
在控制檯再次我得到[object HTMLFormElement]
。所以我認爲這個變量沒有正確存儲或者什麼東西?
下面是簡單的工作基本腳本http://jsfiddle.net/7gYJc/
想法顯示包含任何檢查值的所有項目?例如如果TeamA和TeamB框都被選中,會發生什麼? – verdesmarald
另外,Brand4的值不正確。 :) – verdesmarald