• 排序箭头,升序,降序简单实现


    css不好实现的效果,通过背景图片来弥补。

    css

        <style>
            .sortedASC{
                background: url({sh::PUB}img/icon-table-sort-asc.png) no-repeat 80% 5px #eee;
            }
            .sorted
            {
                background: url({sh::PUB}img/icon-table-sort.png) no-repeat 80% 9px #eee ;
            }
    
            .sortedDESC{
                background: url({sh::PUB}img/icon-table-sort-desc.png) no-repeat 80% 11px #eee;
            }
        </style>
    

    html

                <tr role="row">
                    <th role="columnheader" tabindex="0" aria-controls="sample-table-2" rowspan="1" colspan="1" aria-label="Domain: activate to sort column ascending">默认</th>
                    <th class="sort sortedASC" role="columnheader" tabindex="0" aria-controls="sample-table-2" rowspan="1" colspan="1" aria-label="Price: activate to sort column ascending">销量</th>
                    <th class="sort sortedDESC" role="columnheader" tabindex="0" aria-controls="sample-table-2" rowspan="1" colspan="1" aria-label="Price: activate to sort column ascending">新品</th>
                    <th class="sort sorted" role="columnheader" tabindex="0" aria-controls="sample-table-2" rowspan="1" colspan="1" aria-label="Update: activate to sort column ascending">
                        <i class="ace-icon fa fa-clock-o bigger-110 hidden-480"></i> 价格
                    </th>
                </tr>
    

    效果有了,剩下的就是通过js逻辑和程序逻辑来实现排序了。

    实现功能

    html改造

    <th class="sort" data-type="default" role="columnheader" tabindex="0" aria-controls="sample-table-2" rowspan="1" colspan="1" aria-label="Domain: activate to sort column ascending">默认</th>
    <th class="sort <if condition='$sale eq 1'>sortedASC<elseif condition='$sale eq -1'/>sortedDESC<else />sorted</if>" data-type="sale" role="columnheader" tabindex="0" aria-controls="sample-table-2" rowspan="1" colspan="1" aria-label="Price: activate to sort column ascending">销量</th>
    <th class="sort <if condition='$new eq 1'>sortedASC<elseif condition='$new eq -1'/>sortedDESC<else />sorted</if>" data-type="new" role="columnheader" tabindex="0" aria-controls="sample-table-2" rowspan="1" colspan="1" aria-label="Price: activate to sort column ascending">新品</th>
    <th class="sort <if condition='$price eq 1'>sortedASC<elseif condition='$price eq -1'/>sortedDESC<else />sorted</if>" data-type="price" role="columnheader" tabindex="0" aria-controls="sample-table-2" rowspan="1" colspan="1" aria-label="Update: activate to sort column ascending">
        <i class="ace-icon fa fa-clock-o bigger-110 hidden-480"></i> 价格
    </th>
    

    增加date-type,统一的class 'sort'。

    js事件

    $('.sort').click(function() {
        var type = $(this).data('type');
        var category_id = '{sh:$category_id}';
        var sort;
        if ($(this).hasClass('sorted')) { // 降序
            $(this).removeClass('sorted').addClass('sortedDESC');
            sort = '-1';
        }else if ($(this).hasClass('sortedASC')) { // 降序
            $(this).removeClass('sortedASC').addClass('sortedDESC');
            sort = '-1';
        }else if ($(this).hasClass('sortedDESC')) { // 升序
            $(this).removeClass('sortedDESC').addClass('sortedASC');
            sort = '1';
        }
        if (type =='default') {
            location.href="{sh::U('Store/Home/goodslist',array('category_id'=>'"+category_id+"'))}";
        } else {
            location.href="{sh::U('Store/Home/goodslist',array('category_id'=>'"+category_id+"','"+type+"'=>'"+sort+"'))}";
        }
    
        
    });
    

    后台处理

    if ($sale = $this->_request('sale')) {
        if ($sale == '-1') {
            $order = '(salecount+fakemembercount) desc';
        }
    
        if ($sale == '1') {
            $order = '(salecount+fakemembercount) asc';
        }
        $this->assign('sale',$sale);
    }
    
    if ($price = $this->_request('price')) {
        if ($price == '-1') {
            $order = 'oprice desc';
        }
    
        if ($price == '1') {
            $order = 'oprice asc';
        }
        $this->assign('price',$price);
    }
    
    if ($new = $this->_request('new')) {
        if ($new == '-1') {
            $order = 'addtime desc';
        }
    
        if ($new == '1') {
            $order = 'addtime asc';
        }
        $this->assign('new',$new);
    }
    
    

    tips:这里是大概的思路,具体需要你们根据实际情况去实现,可以优化成异步加载。

  • 相关阅读:
    十一招解决:系统IE部分网页打不开怎么办(转载)
    基于阿里云server搭建SVNserver
    hdu 2825 Wireless Password(ac自己主动机&amp;dp)
    压力单位MPa、Psi和bar之间换算公式
    hdu4506小明系列故事——师兄帮帮忙 (用二进制,大数高速取余)
    图像处理之霍夫变换(直线检測算法)
    hdu1171 Big Event in HDU 01-背包
    [视频] x264 压缩笔记
    UVALive 4043 Ants
    关于游戏手柄按键的设计
  • 原文地址:https://www.cnblogs.com/jiqing9006/p/5743537.html
Copyright © 2020-2023  润新知