jquery.sort——表格排序插件

原文地址:点击打开链接

首先声明:原创并不是本人, 但本人在原创的基础上做了较大的修改, 算是半原创吧:

1. 添加了卸载函数 unsort , 从而能在表格数据反复变动(AJAX 页面是经常用到的)的情况下使用—— $table.unsort().sort();

2. 适应IE6。  原文中用图片地址来判断图片, 但有些浏览器会修改图片的src(将相对变绝对等)从而出错。

3. 增加回调函数,更方便。

4. 极力缩减代码行数,使之简短。


再次感谢ZouHao , 是他给我们带来了最初宝贵的启示!

/**
 * Author     : ZouHao
 * Description: jquery表格插件
 * Modify by  : yenange on 2014-02-07
 * Example    :
 * 1: 默认 ( 图片位置确定为js中写死的位置,而且最后一行不需要去掉 ) 
    $("#table1").sort();
 * 2: 参数使用语法
    $("#table1").sort({
        'ascImgUrl':    '/static/images/bullet_arrow_up.png',       //升序图片地址
        'descImgUrl':   '/static/images/bullet_arrow_down.png',     //降序图片地址
        'endRow':0,		                                            //去掉最后几行, 不去掉为0, 去掉一行为 -1 ……
        'isHeaderTh':true,                                          //头部是否为th
        'callback': function(){  }                                  //回调函数
    });
 */
;(function ($) {  
	$.fn.sort = function (options) {  
		var settings = $.extend({
			'ascImgUrl':'/static/images/bullet_arrow_up.png',       //升序图片
			'descImgUrl':'/static/images/bullet_arrow_down.png',    //降序图片
			'endRow':0,		        //去掉最后几行, 不去掉为0, 去掉一行为 -1 ……
			'isHeaderTh':true       //头部是否为th
		},options);
		init(this);
		function init(p){
			/** 初始化一些变量 */
			var node=settings.isHeaderTh?'th':'td';
			var $sortImgParents=$(p).find("tr "+node+"[sort='true']");
			/** 初始化头部图片 */
			addImg($sortImgParents);
			
			/** 初始化点击表格头部事件 */
			$sortImgParents.css("cursor","pointer").bind("click.sort",function(){
				/** 获取当前行数*/
				settings.startRow=$(this).parent().index();
				settings.index=$(this).index();
				//得到当前单元格点击时的可见排序图片集合
				var $sortImgs = $(this).find("img[sortTable]:visible");
				//得到改变之后的排序方向
				var sortDirection = ($sortImgs.size()==2 || $sortImgs.attr("sortTable")=="desc") ? "asc" : "desc";
				
				$sortImgParents.find("img[sortTable]").show();  //将所有图片全部显示
				hideImg(this,sortDirection);                    //隐藏当前点击的图片,并将反向图片显示出来
				changeTableBody(p,sortDirection);               //排序
				if(settings.callback){                          
				    settings.callback();                        //执行回调
				}
			});
		}
		
		/** 将数据进行排序 */
		function changeTableBody(p,sort){
		    var calRow = settings.endRow < 0 ? $(p).find("tr").size()+settings.endRow : $(p).find("tr").size()-settings.endRow;
			var data=new Array();
			//所选的行
			var trBodyList=$(p).find("tr:lt("+ calRow +"):gt("+settings.startRow+")");
			trBodyList.each(function(i){
				data[i]=new Array();
				$(this).find("td").each(function(j){
					data[i][j]=$(this).html();
				});
			});
			data.sort(function(x, y){  
                return sort=='asc' ? x[settings.index].localeCompare(y[settings.index]) : y[settings.index].localeCompare(x[settings.index]);  
			});
			trBodyList.each(function(i){
				$(this).find("td").each(function(j){
					$(this).html(data[i][j]);
				});
			});
		}
		/** 为每个表格头部添加图片 */
		function addImg($sortImgParents){
			$sortImgParents.find("img[sortTable]").remove().end().append('<img sortTable="asc" src="'+settings.ascImgUrl+'" style="width:8px;height:8px;" /><img sortTable="desc" src="'+settings.descImgUrl+'" style="width:8px;height:8px;" />');
		}
		/** 隐藏当前点击表格升序/降序图片 */
		function hideImg(currHeader,sort){
		    $(currHeader).find("img[sortTable]").each(function(){ $(this).toggle( $(this).attr("sortTable") == sort) });
		}
		return this;
	};
	/** 取消排序效果 */
	$.fn.unsort = function () {
		$(this).find("[sort='true']").css("cursor","auto").unbind("click.sort").find("img[sortTable]").remove();
	    return this;
	};
})(jQuery);



  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值