如果可能的话,我需要一些关于以下jQuery代码的帮助.
$(document).ready(function() {
$('table.sortable').each(function() {
var $table = $(this);
$('th', $table).each(function(column) { // #A
var $header = $(this);
$header.click(function() {
var rows = $table.find('tbody > tr').get();
rows.sort(function(a, b) { // #B
var keyA = $(a).children('td').eq(column).text().toUpperCase(); //#C
var keyB = $(b).children('td').eq(column).text().toUpperCase();
if(keyA < keyB) return -1;
if(keyA > keyB) return 1;
return 0;
});
$.each(rows, function(index, row) { //#D
$table.children('tbody').append(row);
});
});
});
});
});对于我添加的评论(从A到D),谁能给我解释一下:
#A -意味着这个函数的结束/结束.也就是说,功能在哪里结束?我在天真地寻找一个结束的大括号,否则通过阅读代码,我假设所有的代码都是针对遇到的每一个'th‘元素运行的,这看起来不太有效?“};”的末尾是否表示此函数的结束?
#B -我希望喜欢来理解这个比较器函数是如何工作的。我的书真的很简短,我在网上找不到任何其他的资源!哪些值将通过参数'a‘和'b’传递到函数中?请有人仔细地解释一下这整个功能好吗?!:)
#C -.eq(列)部分是如何工作的?如果“列”包含循环当前正在进行的迭代,那么该值将始终是最后的迭代值吗?或者,这个比较器函数是否通过.each循环为每次迭代运行?
#D -这个函数可能会遍历排序数组行的每一行,并将其附加到表主体中。这两个参数(索引、行)总是包含在$.each回调函数中吗?
感谢您的帮助!!我已经有了一个关于B的答案,如果你能帮我回答其中一个问题,我会对此表示赞赏的!提前谢谢。
发布于 2009-09-28 21:39:44
回答#B: rows.sort()接受一个带有两个参数的函数(在本例中是a和b),并返回一个值来指示排序的两个参数之间的关系。简而言之,它是一个比较器,它将告诉排序算法a是在b之前还是在b之后。在此调用中,a和b将是表的两行,相关单元格(由列表示)将在转换为大写后使用。
https://stackoverflow.com/questions/1489484
复制相似问题