这个表格排序 jQuery 脚本是如何工作的?
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Sort plugin for jQuery</title>
</head>
<body>
<h1>Demo</h1>
<p>Click on the headers (fruit/quantity).</p>
<table>
<thead>
<tr>
<th>Fruit</th>
<th>Quantity</th>
</tr>
</thead>
<tbody>
<tr>
<td>Grape</td>
<td>15</td>
</tr>
<tr>
<td>Apple</td>
<td>4</td>
</tr>
</tbody>
</table>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script src="jquery.sort.js"></script>
<script>
var th = jQuery('th'),
li = jQuery('li'),
inverse = false;
th.click(function(){
var header = $(this),
index = header.index();
header
.closest('table')
.find('td')
.filter(function(){
return $(this).index() === index;
})
.sort(function(a, b){
a = $(a).text();
b = $(b).text();
return (
isNaN(a) || isNaN(b) ?
a > b : +a > +b
) ?
inverse ? -1 : 1 :
inverse ? 1 : -1;
}, function(){
return this.parentNode;
});
inverse = !inverse;
});
</script>
</body>
</html>
在上面的程序中,当我单击 时,它会对该列中的行进行排序。它还使用此文件中的
.sort
方法。
您能解释一下上面的代码是如何工作的,以及它的内部工作原理吗?这是我获得上述代码的链接:
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
内联注释中的解释:
Comparison(排序)函数:
比较函数很有趣。为了使其更具可读性,请考虑以下函数和示例输入/输出:
输出:
解释:
如果输入 'is,则
isNaN
函数返回 true不是数字”,否则为 false。方便的是,它将数字字符串视为数字。因此,如果我们要比较两个数字(无论是否是字符串),我们的比较函数会返回附加
+
只是将字符串转换为真正的 javascript 数字对象,这意味着当文本代表数值。如果任一单元格的内容不是数字,则比较函数返回
...,这仅对对象应用默认的
>
运算符。对于字符串,它将导致按字母顺序对字符串进行排序。Explanation in comments inline:
Comaprison (sort) Function:
The comparison function is interesting. To make it more readable consider the following function and example input/output:
Output:
Explanation:
The
isNaN
function returns true if the input 'is not a number' and false otherwise. Conveniently, it considers strings of digits to be numbers. So if we are comparing two numbers (whether strings or not) our comparison function returnsAppending the
+
just converts the string to a real javascript numerical object, meaning that the text won't be alphabetically sorted when the text represents numerical values.If either cell's contents is not a number, then the comparison function returns
...which just applies the default
>
operator for the object. In the case of strings, it will result in sorting the strings alphabetically.