Jquery对前端页面进行排序

news/2024/7/10 23:00:03 标签: jquery, js, 前端页面排序

有这样一个需求,一个select元素,每个option代表一中排序方式,通过选择不同的option对前端的页面进行重新排序显示,代码如下,注释在代码里写的很详细:

 //对前端页面进行排序
       //通过juqery每次改变select的option来触发事件,live使得事件能够多次触发,直接change会     导致触发一次就不能再点击
        $(".opt").live('change', function(){
            var value= $(".opt").val();
            //当option得值为signed,按照signed升序的顺序进行排序。
            if(value=="signed"){
                 //下面为主要的比较方式
                 var sel = $('.list_main .list_unit');
                 //排序方式
                 sel.sort(function(a,b){
                 	//eq是下标,下面代码即表示 .list_unit 元素下面的第3个div的值,如果是第一个div就是eq(0)
                    var valveNumOfa = $(a).find('div:eq(2)').text();
                    var valveNumOfb = $(b).find('div:eq(2)').text();
                    //因为前端页面signed的值为数字类型所以用parseInt进行转换
                    //即如果前一个元素大于后一个元素则交换,否则不叫好
                    if(parseInt(valveNumOfa) > parseInt(valveNumOfb)){
                       return 1;
                    }else{
                       return -1;
                    }
                 });
                 //将排序后的元素拼接到页面上,注意这里的位置和前面的.list_main一样
                sel.detach().appendTo('.list_main');
            //根据编号排序,因为都是数字类型所以和signed一样
            }else if(value=="number"){
                 var sel = $('.list_main .list_unit');
                 sel.sort(function(a,b){
                    var valveNumOfa = $(a).find('span:eq(0)').text();
                    var valveNumOfb = $(b).find('span:eq(0)').text();
                    if(parseInt(valveNumOfa) > parseInt(valveNumOfb)){
                        return 1;
                    }else{
                        return -1;
                    }
                });
                sel.detach().appendTo('.list_main');
             //根据姓名排序,这里如果是数字则在最前面,如果然后是英文,然后是中文,中英文都是按照首字母顺序排列
            }else if(value=="cname"){
                 var sel = $('.list_main .list_unit');
                 sel.sort(function(a,b){
                    var valveNumOfa = $(a).find('span:eq(1)').text();
                    var valveNumOfb = $(b).find('span:eq(1)').text();
                    //如果都是汉字或者都不是汉字,则直接进行比较
                    if ((notChinese(valveNumOfa) && notChinese(valveNumOfb)) || (!notChinese(valveNumOfa) && !notChinese(valveNumOfb))) {
                         return valveNumOfa.localeCompare(valveNumOfb)
                    } else {
                   // 如果不都为英文或者汉字,就肯定有一个是英文,如果valveNumOfa是英文,返回-1,valveNumOfa在前,否则就是valveNumOfa是英文,valveNumOfa在前
                    if (notChinese(valveNumOfa)) {
                         return -1
                        } else {
                         return 1
                        }
                    }
                     //下面也是中文的比较方式,
                    //return valveNumOfa.localeCompare(valveNumOfb,"zh-Hans-CN");
                });
                sel.detach().appendTo('.list_main');
            }
        })

         //判断是否是中文
        function notChinese(char) {
                 const charCode = char.charCodeAt(0)
                 return charCode >= 0 && charCode <= 128
        }

 


http://www.niftyadmin.cn/n/625525.html

相关文章

瓢程页面编写思路(需要代码联系我)

页面编写思路 网页页面编写需要清晰的思路&#xff0c;这样才能事半功倍。如果没有计划没有思路的去编写&#xff0c;走一步看一步的话&#xff0c;往往会浪费更多的时间。以下仅是个人的几点思路&#xff0c;希望能给你带来帮助&#xff0c;如有误请留言提醒&#xff0c;我会…

递归算法O(∩_∩)O哈哈~

***什么是递归&#xff1f; *** 从前有座山,山上有座庙,庙里有个老和尚和一个小和尚,有一天,老和尚对小和尚说:从前有座山,山上有座庙,庙里有个老和尚和一个小和尚,有一天,老和尚对小和尚说:从前有座山,山上有座庙,庙里有个老和尚和一个小和尚,有一天,老和尚对小和尚说…(以此循…

Jquery对checkbox搜索的实现

checkbox 和 label组成的选项由于checkbox和label是两个单独的元素&#xff0c;所以在对其进行搜索得时候&#xff0c;样式会出现一些问题&#xff0c;比如将lable的值和输入框输入的值做比较&#xff0c;如果label中存在input输入的元素则显示label和checkbox 常用的做法则不存…

label设置宽度无效的原因以及处理方式【内联元素和块级元素总结】

今天在写前端代码的时候给label标签设置宽度&#xff0c;代码如下 <label class"label" style"color: red;width: 200px ;height: 20px;line-height: 20px;text-align: center;border-radius: 10px; font-size: 12px;"></label> 结果在前端…

JAVA中代码的执行顺序

究竟在JAVA中代码的值行顺序是怎么样的呢&#xff1f; 接下来俺就通过实例来讲讲吧&#xff01; 以下是父类代码&#xff1a; public class Parent {static{//静态代码块System.out.println("父类的静态代码块");}{System.out.println("父类的代码块");//…

页面自动加载js的方法

一、前言 公司有个项目里面有搜索功&#xff0c;根据多个搜索框的条件来进行搜索&#xff0c;产品提了个需求&#xff0c;需要对其中的一个搜索框加一个提示&#xff0c;比如用红色字体&#xff0c;要求对该输入框的搜索字数不能超过5个字符&#xff0c;然后看了一圈&#xff0…

单例模式|

单例模式是一种常用的软件设计模式&#xff0c;其定义是单例对象的类只能允许一个实例存在。 许多时候整个系统只需要拥有一个的全局对象&#xff0c;这样有利于我们协调系统整体的行为。比如在某个服务器程序中&#xff0c;该服务器的配置信息存放在一个文件中&#xff0c;这…

工厂模式O(∩_∩)O

工厂模式是我们最常用的实例化对象模式了&#xff0c;是用工厂方法代替new操作的一种模式。著名的Jive论坛 ,就大量使用了工厂模式&#xff0c;工厂模式在Java程序系统可以说是随处可见。因为工厂模式就相当于创建实例对象的new&#xff0c;我们经常要根据类Class生成实例对象&…