<script type="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())</script>结果输出:
<script type="text/javascript">function 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[5] = "1"document.write(arr + "<br />")document.write(arr.sort(sortNumber))</script>输出如下:
上述列表是通过日期进行排序,在右上角有一个排序图标,我们需要实现的是点击该排序图标,来实现列表升序和降序的切换。
既然是排序我们首先需要考虑的是要有一个排序规则,我们添加一个排序序号则可以实现在客户端列表的排序或者反转。接下来我们通过ASP.NET MVC来实现演示sort的反转。看下视图代码:
<div id="MessageList"> @{int count = 0;foreach (var m in Model){count++;<div class="message-list-item" data-sort="@count"> <div class="main-content"> <div style="margin-top:20px"><a href="#">@m.title</a></div> <div class="q_content"><p>@m.body</p> </div> <div class="q_answeroption" style="border-top: 1px dotted #CCC;padding-bottom: 5px;padding-top: 5px;"><div class="lf"></div><div class="answer_author"><a href="#" class="bluelink">@m.author</a><span class="v-split">|</span>@m.postDate</div> </div> </div></div>} } </div>上述class="message-list-item" 有一个特性 data-sort ,通过此特性来实现初始化的排序。该特性会用于进行DOM元素值的比较,紧接着利用sort方法进行排序。其实说则是调用JQuery中的sort方法,最终还是调用js中的sort方法而已。我们需要对列表进行反转,需要以下几步。
<script type="text/javascript"> var sortThread = {}; $(function () {sortThread.sortAscending = true;$("#ReverseOrder").on("click", function () {sortThread.sortAscending = !sortThread.sortAscending;var $msgListItem = $(".message-list-item");$msgListItem.sort(function (a, b) { var sort1 = a.getAttribute("data-sort") * 1; var sort2 = b.getAttribute("data-sort") * 1; var sortNum = 1; if (!sortThread.sortAscending) sortNum = -1; if (sort1 > sort2) return 1 * sortNum; if (sort1 < sort2) return -1 * sortNum; return 0;});$msgListItem.detach().appendTo("#MessageList");}); }); </script>我们来演示一下:
当然在客户端利用sort不仅仅是反转,还可以排序,如下人员信息列表。
<ul class="peopleList"> <li data-name="John Doe">Mr. John Doe</li> <li data-name="Trent Richardson">Mr. Trent Richardson</li> <li data-name="Cindy Smith">Ms. Cindy Smith</li> <li data-name="Bill Williams">Mr. Bill Williams</li> <li data-name="Jane Doe">Mrs. Jane Doe</li></ul>同理获取上述data-name特性来进行人名排序。