这是对表格进行排序的一个jquery,谁能解释一下这个函数头啊?如下:{ var $sortOrder = 0; //排序类型 1表示升序,0表示降序var $table = $('table#shop');$('th', $table).each(function( column ){//处理三种有可能存在的排序字段,比较方法var findSortKey;if( $(this).is('.sort-title') || $(this).is('.sort-author') ){findSortKey = function( $cell ){return $cell.find('.sort-title').text().toUpperCase()+ '' +$cell.text().toUpperCase();}}else if( $(this).is('.sort-date') ){findSortKey = function( $cell ){return Date.parse('1' + $cell.text());}}else if( $(this).is('.sort-price') ){findSortKey = function( $cell ){var key = parseFloat($cell.text().replace(/^[^\d.]*/, ''))return isNaN(key) ? 0 : key;}}//排序if( findSortKey ){$(this).addClass('clickable').hover(function(){$(this).addClass('hover');var $title = $sortOrder == 0 ? '升序' : '降序';$(this).attr('title', '按'+ $(this).html() + $title +'排列');}, function(){$(this).removeClass('hover');}).click(function(){$sortOrder = $sortOrder == 0 ? 1 : 0;var rows = $table.find('tbody > tr').get();$.each( rows, function( index, row ){row.sortKey = findSortKey($(row).children('td').eq(column));});//排序方法rows.sort(function( a, b ){if( $sortOrder == 1 ){//升序if(a.sortKey < b.sortKey) return -1;if(a.sortKey > b.sortKey) return 1; return 0;}else{//降序if(a.sortKey < b.sortKey) return 1;if(a.sortKey > b.sortKey) return -1; return 0;} });//排序后的对象添加给$table$.each( rows, function( index, row ){$table.children('tbody').append(row);row.sortKey = null;});$table.find('td').removeClass('sorted').filter(':nth-child('+ (column + 1) +')').addClass('sorted');//重新赋予奇偶行的样式$table.alterRowColors();});} }); });
2 回答
qq_花开花谢_0
TA贡献1835条经验 获得超7个赞
$(document).ready(function() -->载入时执行function()
// $('table.sortable').each(function() -->对每个class="sortble"的table执行function()
// var $table = $(this); -->创建一个jquery对象的$table,并分别用$(this)也就是上面的每个class="sortble"的table给 这个$table赋值
摇曳的蔷薇
TA贡献1793条经验 获得超6个赞
$('th','table')两者是并列的,选择所有th,table标签
$('table th')是从属关系,选择所有table下的th标签,不包含table标签。
经过测试发现:
1.$('th','table') 确实是api文档所说的 'table'为原始DOM节点 ,所以返回的为th的所有元素
2.$('th , table')两者是并列的,选择所有th,table标签
3.$('table th')是从属关系,选择所有table下的th标签,不包含table标签。
那我认为 $('th','table') 与 $('table th') 效果是一样的
添加回答
举报
0/150
提交
取消