如果有人能爲此考慮更好的標題,請不要猶豫改變它。如果已經在Jquery中過濾,請保持過濾
我對jQuery相當陌生,並遇到過濾元素的問題。
我使用change函數通過checkbox
過濾DIVS的data-
屬性。
我的問題是,如果我過濾一個data
屬性(colour
),然後我過濾另一個屬性(brand
)元素都是隱藏的。但是如果我取消了其中一個過濾器,即使它們仍被另一個屬性過濾,元素仍會彈出。
無論如何我可以阻止這種情況發生?
這是代碼。
<div data-brand="Nike" data-price="31" data-colour="Blue">Blue</div>
<div data-brand="Nike" data-price="31" data-colour="Red"> Red </div>
Colours:
Blue<input type="checkbox" id="BlueCB" checked>
Red<input type="checkbox" id="RedCB" checked>
Brand: Nike <input type="checkbox" id="NikeCB" checked>
<script>
var BlueSelector = $('#BlueCB');
BlueSelector.on("change", function(){
if($(this).is(":checked"))
{
var divs = $("div[data-colour=Blue]");
divs.css("display", "block");
} else
{
var divs = $("div[data-colour=Blue]");
divs.css("display", "none");
}
});
var RedSelector = $('#RedCB');
RedSelector.on("change", function(){
if($(this).is(":checked"))
{
var divs = $("div[data-colour=Red]");
divs.css("display", "block");
} else
{
var divs = $("div[data-colour=Red]");
divs.css("display", "none");
}
});
var NikeSelector = $('#NikeCB');
NikeSelector.on("change", function(){
if($(this).is(":checked"))
{
var divs = $("div[data-colour=Nike]");
divs.css("display", "block");
} else
{
var divs = $("div[data-brand=Nike]");
divs.css("display", "none");
}
});
</script>
要複製問題,請勾選nike複選框,然後取消選中藍色複選框並再次打勾。該元素將彈出,這是問題。
這裏是JSFIDDLE
這可能聽起來並不像最好的解釋,但我是最好的,我可以..你用小提琴演奏後,你就會明白了。
所以,你只希望如果NikeSelector被選中顏色複選框工作? – xkcd149