jquery 實現篩選功能。

商品屬性篩選

商品的屬性篩選 是一個十分常見的功能,通常是同一類型的屬性只能選擇一個。例如 價格範圍,或者品牌,爲了使選擇的內容看上去更直觀 ,一般都會將選擇項列出,並擁有點擊取消 選擇 ,點擊同類替換的功能。
在下面給出兩個完整實現。

實現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>

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章