jquery 實現篩選功能。
阿新 • • 發佈:2019-01-01
商品屬性篩選
商品的屬性篩選 是一個十分常見的功能,通常是同一型別的屬性只能選擇一個。例如 價格範圍,或者品牌,為了使選擇的內容看上去更直觀 ,一般都會將選擇項列出,並擁有點選取消 選擇 ,點選同類替換的功能。
在下面給出兩個完整實現。
實現1:
使用jquery 的appendTo 讓點選的元素加入到列出項裡面 (同時檢測列出項是否有同一類的元素,有則替換出來,使它返回原列表), 在列出項裡面點選元素 ,則返回 原div ,這裡為了實現 返回原來的div 使用了自定義屬性 。 自然這個實現是有一定的問題,由於限制了div 的class 和父元素的id 一致,這種情況很不方便 , 而且每一次都會需要重新繫結所有事件,一個遞迴。效率上有所欠缺, 接下來看第二種思路 ,更簡單清晰一點。效率會更高一點,而且不需要id 和class 相同 ,也無需重新繫結多個事件
<!DOCTYPE html>
<html>
<head>
<title>動畫</title>
<style type="text/css">
.class1,.class2{
width: 100px;
height: 40px;
margin: 10px;
}
#count{
background-color: sandybrown;
width: 400px;
height: 200px;
}
</style>
</head>
<body>
<div id='class1'>
<button class="class1" data-belong="class1">皮鞋</button>
<button class="class1" data-belong="class1">涼鞋</button>
<button class="class1" data-belong="class1">拖鞋</button>
</div>
<div id="class2" >
<button class="class2" data-belong="class2">手套</button>
<button class="class2" data-belong="class2">皮手套</button>
<button class="class2" data-belong="class2">毛手套</button>
</div>
<div id="count"></div>
</body>
</html>
<script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script>
<script type="text/javascript">
(function check(){
$('#class1> button,#class2>button').off("click").on("click",function(){
$("#count button."+$(this).attr("data-belong")).appendTo("#"+$(this).attr("data-belong"));
$(this).appendTo("#count");
check()
})
$('#count button').off("click").on("click",function(){
$(this).appendTo("#"+$(this).attr("data-belong"))
check()
})
})()
</script>
實現2:
使用jquery的clone 函式 ,這樣原列表就不會需要改動 ,點選 屬性列表裡面的內容只需要直接移除,不需要id 和 class一致。
更自由一些 。程式碼減少了,沒有遞迴的,沒有資料修改繫結的問題,比實現1 優化很多
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<style type="text/css">
.class1,.class2{
width: 100px;
height: 40px;
margin: 10px;
}
#count{
background-color: sandybrown;
width: 400px;
height: 200px;
}
</style>
<body>
<div>
<button class="class1" data-belong="class1">皮鞋</button>
<button class="class1" data-belong="class1">涼鞋</button>
<button class="class1" data-belong="class1">拖鞋</button>
</div>
<div>
<button class="class2" data-belong="class2">手套</button>
<button class="class2" data-belong="class2">皮手套</button>
<button class="class2" data-belong="class2">毛手套</button>
</div>
<div class="count">
</div>
</body>
</html>
<script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script>
<script type="text/javascript">
//只需保持 button 的 class 標誌 和data-belong 一致即可。
$("div:lt(2) button").click(function(){
$("div.count ."+$(this).attr('data-belong')).remove();
$(this).clone().appendTo("div.count");
$('.count button').off("click").on("click",function(){
$(this).remove();
})
})
</script>