1. 程式人生 > >jquery 實現篩選功能。

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>