以下功能允許用戶通過data-attributes
過濾產品,並且可以同時過濾多個值。它通過創建所選值的數組來完成此操作,並且當單擊任何值(在本例中爲checked/unchecked)時,它將隱藏所有項目,然後重新顯示與更新數組中的值匹配的項目。修改功能同時過濾多個數據屬性
它可以在過濾一個data-attribute
時正常工作,但是如果組合在過濾多個屬性時不再顯示與任何值匹配的所有結果,而只是顯示匹配所有指定值的結果。
我已經張貼在這裏它說明了一個問題,小提琴:http://jsfiddle.net/chayacooper/WZpMh/94/所有,但其中一個項目既有data-style="V-Neck"
和data-color="Black"
的價值,因此他們應該如果選擇其中一種過濾器仍然可見,但如果從另一個值一個不同的data-attribute
一些項目被隱藏。
$(document).ready(function() {
var selected = [];
$('#attributes-Colors *').click(function() {
var attrColor = $(this).data('color');
var $this = $(this);
if ($this.parent().hasClass("active")) {
$this.parent().removeClass("active");
selected.splice(selected.indexOf(attrColor),1);
}
else {
$this.parent().addClass("active");
selected.push(attrColor);
}
$("#content").find("*").hide();
$.each(selected, function(index,item) {
$('#content').find('[data-color *="' + item + '"]').show();
});
return false;
});
$('#attributes-Silhouettes *').click(function() {
var attrStyle = $(this).data('style');
var $this = $(this);
if ($this.parent().hasClass("active")) {
$this.parent().removeClass("active");
selected.splice(selected.indexOf(attrStyle),1);
}
else {
$this.parent().addClass("active");
selected.push(attrStyle);
}
$("#content").find("*").hide();
$.each(selected, function(index,item) {
$('#content').find('[data-style *="' + item + '"]').show();
});
return false;
});
});
有2個'$單擊處理(「#屬性 - 剪影*」)'宣佈第24行,然後線25可能只是複製/粘貼問題,可能不反映實際的代碼。在任何情況下,評論一個似乎都會導致與您之前的工作示例相同的行爲。 http://jsfiddle.net/WZpMh/54/ – Bryan 2013-03-27 04:39:41
@Bryan - 至少我知道爲什麼該函數停止工作:-)現在,它實際上運行,我發現它的運行方式合併時的問題 - 當過濾超過一個數據屬性不再顯示匹配任何值的所有結果,而只顯示匹配所有指定值的結果。 – 2013-03-27 05:40:29