这个表格排序 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
方法。
您能解释一下上面的代码是如何工作的,以及它的内部工作原理吗?这是我获得上述代码的链接:
<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>
In the above program when I click on the <th>
it sorts the rows in that column. It also uses the .sort
method from this file.
Can you explain how the above code works, and its inner working? This is the link where I got the above code:
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 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.