[前端] jquery点击实现升序降序图标切换

2019 0
黑夜隐士 2022-10-21 15:42:27 | 显示全部楼层 |阅读模式
本文实例为大家分享了jquery点击实现升序降序图标切换的具体代码,供大家参考,具体内容如下
需求: 有一个查询结果,返回的是表格的形式,点击表头任何一列,都能实现升序/降序的UI变换,同时表格内容该列也升序降序排列.支持分页.
实现步骤:
1.css
  1. .table-sort {
  2.   display: inline-block;
  3.   width: 10px;
  4.   height: 20px;
  5.   margin-left: 5px;
  6.   cursor: pointer !important;
  7.   vertical-align: middle;
  8.   position: relative
  9. }
  10. .table-sort i {
  11.   border: 6px dashed transparent;
  12.   position: absolute;
  13.   left: 5px
  14. }
  15. .table-sort .sort-asc {
  16.   top: 2px;
  17.   border-top: none;
  18.   border-bottom-style: solid;
  19.   border-bottom-color: #b2b2b2
  20. }
  21. .table-sort .sort-asc.cur, .table-sort .sort-asc:hover {
  22.   border-bottom-color: #fff
  23. }
  24. .table-sort .sort-desc {
  25.   bottom: 3px;
  26.   border-bottom: none;
  27.   border-top-style: solid;
  28.   border-top-color: #b2b2b2
  29. }
  30. .table-sort .sort-desc.cur, .table-sort .sort-desc:hover {
  31.   border-top-color: #fff
  32. }
复制代码
2.html部分:
在相应的表头加上样式: sortIndex_?  这个用来标识列,比如一个表格有5个列需要有排序功能,就可以依次设置5个th sortIndex_1 、sortIndex_2 ……
<th class="sortIndex_1">  面积 <small>(亩)</small>  <span class="table-sort">    <i class="sort-asc"></i>    <i class="sort-desc"></i>  </span></th><th class="sortIndex_2">  人数 <small>(位)</small>  <span class="table-sort">    <i class="sort-asc"></i>    <i class="sort-desc"></i>  </span></th>
3. html部分,写在form标签以内,需要提交给后台的隐藏表单: orderByIndex- 标识第几列需要排序; ascOrDesc-标识需要升序还是降序
  1. <script>
  2. <input type="hidden" class="form-control" name="orderByIndex" id="orderByIndex" value="${orderByIndex}" />
  3. <input type="hidden" class="form-control" name="ascOrDesc" id="ascOrDesc" value="${ascOrDesc}" />
  4. </script>
复制代码
4.javaScript部分
  1. <script>
  2.   $(function () {   
  3.     initSort(2);//有几个列需要排序,这里数值就写几
  4.   });
  5. </script>
  6. <script>
  7.   var initSort = function(maxColNumberNeedSort){
  8.     var orderByIndex = $("#orderByIndex").val();
  9.     var ascOrDesc = $("#ascOrDesc").val();
  10.     for(var i=1;i<=maxColNumberNeedSort;i++){
  11.       var indexStr = ".sortIndex_"+i;
  12.       $(indexStr).find(".table-sort i").each(function() {
  13.         $(this).removeClass("cur");
  14.       });
  15.       $(indexStr).bind("click", {index: i}, changeArrowRefreshData);
  16.     }
  17.     if(orderByIndex!=undefined&&ascOrDesc!=undefined){
  18.       var indexStr = ".sortIndex_"+orderByIndex;
  19.       if(ascOrDesc==0){//降序
  20.         $(indexStr).find(".table-sort i").eq(1).addClass("cur");
  21.       }else{//升序
  22.         $(indexStr).find(".table-sort i").eq(0).addClass("cur");
  23.       }
  24.     }
  25.   };
  26.   var changeArrowRefreshData= function(event) {
  27.     var index = event.data.index;
  28.     var _this = $(this);
  29.     if(_this.find(".table-sort i").eq(0).hasClass("cur")){//想要降序排列
  30.       $("#ascOrDesc").val(0);
  31.       _this.find(".table-sort i").eq(0).removeClass("cur");
  32.       _this.find(".table-sort i").eq(1).addClass("cur");
  33.     }else{
  34.       $("#ascOrDesc").val(1);
  35.       _this.find(".table-sort i").eq(1).removeClass("cur");
  36.       _this.find(".table-sort i").eq(0).addClass("cur");
  37.     }
  38.     $("#orderByIndex").val(index);
  39.     getTableData(1);//在此方法实现你的分页获取数据逻辑,刷新表格数据.
  40.   };
  41. </script>
复制代码
最终效果图:第1列,第2列实现了手动排序. (注意,一次操作,只能对一列排序,其它列的排序不会被点亮.)


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持中国红客联盟。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

中国红客联盟公众号

联系站长QQ:5520533

admin@chnhonker.com
Copyright © 2001-2025 Discuz Team. Powered by Discuz! X3.5 ( 粤ICP备13060014号 )|天天打卡 本站已运行