宝哥软件园

jQuery使用排序对DOM元素进行排序

编辑:宝哥软件园 来源:互联网 时间:2021-09-12

排序是我们熟悉的。在大多数应用程序中,都有这样一个场景:当我们从服务器获得一个列表,并在界面上呈现它时,我们可以依靠某种规则来对它进行排序。当然,他们中的大多数人会再次与服务器交互,将列表重新呈现给客户端,这还不错。然而,在某些情况下,我们不需要使用框架或向客户端重新生成列表,但是我们显然可以在客户端上这样做来实现我们的目标。让我们看看。

主题

让我们首先看看w3c中js的排序方法。

脚本类型=' text/JavaScript ' var arr=new Array(6)arr[0]=' George ' arr[1]=' John ' arr[2]=' Thomas ' arr[3]=' James ' arr[4]=' Adrew ' arr[5]=' Martin ' document . write(arr ' br/')document . write(arr . sort())/脚本结果输出:

乔治,约翰,托马斯,詹姆斯,阿德瑞,马丁阿德瑞,乔治,詹姆斯,约翰,马丁,托马斯

如果在没有参数的情况下调用方法,数组中的元素将按字母顺序排序。更准确地说,它将按照字符编码的顺序进行排序,但我们可以自定义排序规则。

我们在sort method参数中自定义排序函数,如下所示:

脚本类型='text/javascript '函数sortNumber(a,B){ return a-B } var arr=new array(6)arr[0]=' 10 ' arr[1]=' 5 ' arr[2]=' 40 ' arr[3]=' 25 ' arr[4]=' 1000 ' arr[

10,5,40,25,1000,11,5,10,25,40,1000

以上是w3c中的一个例子,排序方法就这么简单吗?有什么实际用途吗?

我可以想到实际的场景:在一个页面上渲染一个列表的时候,页面上可能会有更多的内容,所以我们需要滚动鼠标才能看到其他内容,或者我们已经看到了页面的前几个内容,想要看到其他内容。此时,我们需要反转页面的内容。我们做什么呢

使用排序方法对DOM元素进行排序

首先,我们来看看界面效果,如下所示:

以上列表按日期排序,右上角有一个排序图标。我们需要实现的是点击排序图标,在列表的升序和降序之间切换。

既然是排序,我们首先需要考虑的就是有一个排序规则。我们可以通过添加排序序号来排序或反转客户端列表。接下来,我们演示ASP.NET MVC的排序反转。查看视图代码:

div id=' MessageList ' @ { int count=0;foreach(模型中的var m){ count;div class=' message-list-item ' data-sort=' @ count ' div class=' main-content ' div style=' margin-top :20 px ' a href='#'@m.title/a/div class=' q _ content ' p@m.body/p/div class=' q _ answer option ' style=' border-top : 1px虚线# CCC衬垫-bottom : 5px;衬垫-top : 5px;div class=' lf '/div class=' answer _ author ' a href=' # ' class='bluelink'@m.author/a span class=' v-split ' |/span @ m . PostDate/div/div/div } }/div上面的class='message-list-item '有一个属性data-sort,通过它可以实现初始化排序。此功能用于比较DOM元素值,然后通过排序方法进行排序。其实就是在JQuery中调用sort方法,最后在js中调用sort方法。我们需要反转列表,并需要以下步骤。

(1)定义一个全局变量。

为什么要定义全局变量?该变量用于保存排序状态(asc或desc)。

(2)使用JQuery选择列表中的所有元素。

(3)运行JQuery中的排序方法进行排序。

(4)通过分离方法将列表重新附加到父节点。

整个代码如下。

脚本类型=' text/JavaScript ' var排序线程={ };$(function(){排序线程。sortascending=true$('#ReverseOrder ').on('click ',function(){ sort thread。sortascending=!排序线程var $msgListItem=$(' .消息列表项目');$msgListItem.sort(函数(a,b){ var sort 1=a . GetAttribute(' data-sort ')* 1;var sort 2=b . GetAttribute(' data-sort ')* 1;var sortNum=1;if(!排序线程。sortascending)sort num=-1;if (sort1 sort2)返回1 *架次数(1架次2)返回-1 *排序编号;返回0;});$msgListItem.detach().appendo(' # MessageList ');});});/script我们来演示一下:

当然在客户端利用分类不仅仅是反转,还可以排序,如下人员信息列表。

李先生。无名氏/李莉资料名称='特伦特理查森'先生。特伦特理查森/李莉资料-姓名='辛迪史密斯'女士。辛迪史密斯/李莉资料名称='比尔威廉姆斯'先生。比尔威廉姆斯/李莉资料-姓名='无名氏'夫人。无名氏同理获取上述数据名称特性来进行人名排序。

总结

本节通过实际例子来讲述了JQuery中的分类方法。我也是在查资料过程中看到在客户端排序的思路,于是进行了学习并和大家分享下。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

更多资讯
游戏推荐
更多+