/* * 表格隔行换色插件 * 江鸿宾(QQ33080907) * 最近修改:2016.11.17 * 本插件只用于作者参与的项目,未经许可请勿转载 */ /* 参考CSS 列表表格(HTML中table只设置class,不设置其他任何属性) table.tb_list { border-bottom: 2px solid #69F; width: 100%; border-collapse: collapse; } table.tb_list th, table.tb_list td { border: 1px solid #FFF; padding: 3px; } table.tb_list th { color: #FFFFFF; background-color: #69F; border-bottom: 1px solid #036; } table.tb_list th[colspan] { border-bottom: 1px solid #FFF; } table.tb_list th a { color: #fff; text-decoration: underline; } table.tb_list th a:hover { text-decoration: none; } table.tb_list tr:not(:last-child):nth-child(2n+1) { background-color: #EDF2FC; } table.tb_list tr:not(:last-child):not(.selected):hover { background-color: #C5E0FA; } table.tb_list tr.selected td { background-color: #B4D0E9; } table.tb_list tr:last-child {border-top: 2px solid #69F; } */ ; (function ($) { "use strict"; $.fn.jTable = function (options) { //默认属性或参数 var defaults = { selected: "selected", //选中时的样式类 checkboxname: "idlist", //每行开始的复选框名字,不是这个名字不参加行为 rownum: false //在每行第一列填充行号 }; //调用时的参数覆盖默认参数 var opts = $.extend(defaults, options); //绑定该插件的表格 var table = this; //把所有行存入对象,方便后面调用,排除表头和表脚 var tr = $("tr", table).not(":first"); //每行第一列填充行号 if (opts.rownum) { tr.each(function (index) { $(this).children('td').first().text(index + 1).css('text-align', 'center'); }); } //当单击带复选框的行时,高亮该行且选中复选框,如果以前是高亮状态则取消,不带复选框没有这个行为 tr.has("input:checkbox[name='" + opts.checkboxname + "']").on('click', function () { var tf = $(this).hasClass(opts.selected); $(this)[tf ? "removeClass" : "addClass"](opts.selected).find("input:checkbox[name='" + opts.checkboxname + "']").prop("checked", !tf); getChecked(); }); //初始状态也有选中的复选框,直接高亮显示 tr.has("input:checkbox:checked[name='" + opts.checkboxname + "']").addClass(opts.selected); getChecked(); //全选框 $("#checkall,input.checkall").on('click', function () { var checked = $(this).prop("checked"); if (checked) { tr.has("input:checkbox[name='" + opts.checkboxname + "']").addClass(opts.selected).find("input:checkbox[name='" + opts.checkboxname + "']").prop("checked", true); } else { tr.has("input:checkbox[name='" + opts.checkboxname + "']").removeClass(opts.selected).find("input:checkbox[name='" + opts.checkboxname + "']").prop("checked", false); } getChecked(); }); //阻止表格中的超链接点击后的事件冒泡 tr.find("a").click(function (e) { e.stopPropagation(); }); //返回this,使方法可链 return table; //获取选中的记录并存入table缓存中 function getChecked() { var str = ""; $("input:checkbox:checked[name='" + opts.checkboxname + "']", table).each(function (i) { var v = $(this).val(); if (i === 0) { str = v; } //消除重复 else if ((',' + str + ',').indexOf(',' + v + ',') < 0) { str += "," + v; } }); table.data("checked", str); } }; })(jQuery);