JQuery 表格操作(交替显示、拖动表格行、选择行等)


Posted in Javascript onJuly 29, 2009

JQuery 确实很方便,简单的代码,却能实现一些不错的功能。

<script type='text/javascript'><!-- 
    $(function(){ 
        //交替显示行 
        $('#alternation').click(function(){                 
            $('tbody > tr:odd', $('#example')).toggleClass('alternation'); 
        });         //三色交替显示行 
        $('#alternationThree').click(function(){                 
            $('tbody > tr:nth-child(3n)', $('#example')).toggleClass('alternation'); 
            $('tbody > tr:nth-child(3n+2)', $('#example')).toggleClass('alternation3'); 
        }); 
        //选择行 
        $('#selectTr').click(function(){ 
            //为表格行添加选择事件处理 
            $('tbody > tr', $('#example')).click(function(){ 
                $('.selected').removeClass('selected');                     
                $(this).addClass('selected'); //this 表示引发事件的对象,但它不是 jquery 对象 
            }).hover(        //注意这里的链式调用 
                function(){ 
                    $(this).addClass('mouseOver'); 
                }, 
                function(){ 
                    $(this).removeClass('mouseOver'); 
                } 
            );                 
        }); 
        //增加排序功能 
        $('#sort').click(tableSort); 
        //获取排好序后的主键值 
        $('#getSequence').click(function(){ 
            var sequence = []; 
            $('#content input[name=noticeSelect]').each(function(){ 
                sequence.push(this.value); 
            }); 
            alert(sequence.join(',')); 
        }); 
        //获取表格中已选择的复选框的值集合 
        $('#getSelected').click(function(){ 
            var sequence = []; 
            $('#content input[name=noticeSelect]:checked').each(function(){ 
                sequence.push(this.value); 
            }); 
            alert(sequence.join(',')); 
        }); 
        //按日期降序排列 
        $('#dateDesc').click(descByDate); 
    }); 
    //表格排序 
    function tableSort() 
    { 
        var tbody = $('#example > tbody'); 
        var rows = tbody.children(); 
        var selectedRow; 
        //压下鼠标时选取行 
        rows.mousedown(function(){ 
            selectedRow = this; 
            tbody.css('cursor', 'move'); 
            return false;    //防止拖动时选取文本内容,必须和 mousemove 一起使用 
        }); 
        rows.mousemove(function(){ 
            return false;    //防止拖动时选取文本内容,必须和 mousedown 一起使用 
        }); 
        //释放鼠标键时进行插入 
        rows.mouseup(function(){                 
            if(selectedRow) 
            { 
                if(selectedRow != this) 
                { 
                    $(this).before($(selectedRow)).removeClass('mouseOver'); //插入                                                         
                } 
                tbody.css('cursor', 'default'); 
                selectedRow = null;                         
            }                                 
        }); 
        //标示当前鼠标所在位置 
        rows.hover( 
            function(){                     
                if(selectedRow && selectedRow != this) 
                { 
                    $(this).addClass('mouseOver');    //区分大小写的,写成 'mouseover' 就不行                         
                }                     
            }, 
            function(){ 
                if(selectedRow && selectedRow != this) 
                { 
                    $(this).removeClass('mouseOver'); 
                } 
            } 
        ); 
        //当用户压着鼠标键移出 tbody 时,清除 cursor 的拖动形状,以前当前选取的 selectedRow             
        tbody.mouseover(function(event){ 
            event.stopPropagation(); //禁止 tbody 的事件传播到外层的 div 中 
        });     
        $('#contain').mouseover(function(event){ 
            if($(event.relatedTarget).parents('#content')) //event.relatedTarget: 获取该事件发生前鼠标所在位置处的元素 
            { 
                tbody.css('cursor', 'default'); 
                selectedRow = null; 
            } 
        }); 
    } 
    //按日期降序排列 
    function descByDate() 
    { 
        var descElements = $('#content > tr').get().sort(function(first, second){                 
            var f = $('td:eq(4)', first).html();    //first = $('td:eq(4)', first).html();IE 下会有问题,FF 正常,下同 
            var s = $('td:eq(4)', second).html(); 
            if(f < s) 
                return 1;                 
            if(f == s) 
                return 0; 
            return -1;                 
        });             
        $(descElements).appendTo('#content'); 
    } 
// --></script>

HTML:
<table id='example' style="width:650px; border-collapse:collapse;"> 
<thead style="text-align:center;" style="text-align:center;"> 
<tr><td colspan='5'>公告列表</td></tr> 
<tr> 
<th style="width:50px;">???lt;/th> 
<th style="width:50px;">序?</th> 
<th style="width:300px;">?祟}</th> 
<th style="width:100px;">???</th> 
<th style="width:150px;">?布日期</th> 
</tr> 
</thead> 
<tbody id='content'> 
<tr> 
<td style="text-align:center;" style="text-align:center;"><input type='checkbox' name='noticeSelect' value='1' /></td> 
<td style="text-align:center;" style="text-align:center;">01</td> 
<td>微?在 VS 2008 中引入了 jquery</td> 
<td>Microsoft</td> 
<td>2009-01-02 10:30</td> 
</tr> 
<tr> 
<td style="text-align:center;" style="text-align:center;"><input type='checkbox' name='noticeSelect' value='2' /></td> 
<td style="text-align:center;" style="text-align:center;">02</td> 
<td>Linux微软Sun将探讨操作系统的未来</td> 
<td>Sun</td> 
<td>2009-01-03 09:30</td> 
</tr> 
<tr> 
<td style="text-align:center;" style="text-align:center;"><input type='checkbox' name='noticeSelect' value='3' /></td> 
<td style="text-align:center;" style="text-align:center;">03</td> 
<td>联想集团董事长柳传志:联想将在一年内成功</td> 
<td>?想</td> 
<td>2009-01-05 14:30</td> 
</tr> 
<tr> 
<td style="text-align:center;" style="text-align:center;"><input type='checkbox' name='noticeSelect' value='4' /></td> 
<td style="text-align:center;" style="text-align:center;">04</td> 
<td>美议员要求立法限制Google地球 违反将日罚25万</td> 
<td>Google</td> 
<td>2009-01-10 20:45</td> 
</tr> 
<tr> 
<td style="text-align:center;" style="text-align:center;"><input type='checkbox' name='noticeSelect' value='5' /></td> 
<td style="text-align:center;" style="text-align:center;">05</td> 
<td>FireFox实验室提出新标签页理念并发布原始模型</td> 
<td>FireFox</td> 
<td>2009-01-14 17:58</td> 
</tr> 
<tr> 
<td style="text-align:center;" style="text-align:center;"><input type='checkbox' name='noticeSelect' value='6' /></td> 
<td style="text-align:center;" style="text-align:center;">06</td> 
<td>向Ruby之父学程序设计</td> 
<td>Ruby</td> 
<td>2009-01-19 07:22</td> 
</tr> 
<tr> 
<td style="text-align:center;" style="text-align:center;"><input type='checkbox' name='noticeSelect' value='7' /></td> 
<td style="text-align:center;" style="text-align:center;">07</td> 
<td>Apple智能手机市场份额翻番达10.7%</td> 
<td>Apple</td> 
<td>2009-01-21 10:44</td> 
</tr> 
<tr> 
<td style="text-align:center;" style="text-align:center;"><input type='checkbox' name='noticeSelect' value='8' /></td> 
<td style="text-align:center;" style="text-align:center;">08</td> 
<td>联发科助力 Windows Mobile加入山寨大军</td> 
<td>联发科</td> 
<td>2009-01-22 16:37</td> 
</tr> 
<tr> 
<td style="text-align:center;" style="text-align:center;"><input type='checkbox' name='noticeSelect' value='9' /></td> 
<td style="text-align:center;" style="text-align:center;">09</td> 
<td>Nokia的开源Qt开发工具4.5版发布</td> 
<td>Nokia</td> 
<td>2009-01-28 14:08</td> 
</tr> 
<tr> 
<td style="text-align:center;" style="text-align:center;"><input type='checkbox' name='noticeSelect' value='10' /></td> 
<td style="text-align:center;" style="text-align:center;">10</td> 
<td>GCC将接受IBM代码支持自动平行优化</td> 
<td>IBM</td> 
<td>2009-02-01 21:14</td> 
</tr> 
</tbody> 
</table>

完整代码下载:JQuery 表格操作
Javascript 相关文章推荐
JavaScript使用prototype定义对象类型(转)[
Dec 22 Javascript
javascript基础第一章 JavaScript与用户端
Jul 22 Javascript
JavaScript 原型学习总结
Oct 29 Javascript
XMLHTTP 乱码的解决方法(UTF8,GB2312 编码 解码)
Jan 12 Javascript
js 操作select与option(示例讲解)
Dec 20 Javascript
js数组去重的常用方法总结
Jan 24 Javascript
JS+Canvas绘制时钟效果
Aug 20 Javascript
JQuery动态添加Select的Option元素实现方法
Aug 29 Javascript
node.js入门教程之querystring模块的使用方法
Feb 27 Javascript
JavaScript-定时器0~9抽奖系统详解(代码)
Aug 16 Javascript
解决ng-repeat产生的ng-model中取不到值的问题
Oct 02 Javascript
微信小程序在其他页面监听globalData中值的变化
Jul 15 Javascript
JavaScript 设计模式学习 Factory
Jul 29 #Javascript
JQuery UI皮肤定制
Jul 27 #Javascript
JavaScript 设计模式学习 Singleton
Jul 27 #Javascript
xml 封装与解析(javascript和C#中)
Jul 26 #Javascript
JavaScript 捕获窗口关闭事件
Jul 26 #Javascript
jquery tools之tooltip
Jul 25 #Javascript
jquery tools之tabs 选项卡/页签
Jul 25 #Javascript
You might like
PHP无法访问远程mysql的问题分析及解决
2013/05/16 PHP
Yii2.0表关联查询实例分析
2016/07/18 PHP
php实现的http请求封装示例
2016/11/08 PHP
ThinkPHP框架整合微信支付之Native 扫码支付模式一图文详解
2019/04/09 PHP
laravel5.6实现数值转换
2019/10/23 PHP
firefox插件Firebug的使用教程
2010/01/02 Javascript
js中将URL中的参数提取出来作为对象的实现代码
2011/08/16 Javascript
js局部刷新页面时间具体实现
2013/07/04 Javascript
js判断浏览器类型的方法
2013/08/07 Javascript
jquery中animate动画积累的解决方法
2013/10/05 Javascript
Flexigrid在IE下不显示数据的处理的解决方法
2013/10/24 Javascript
javascript实现图片自动和可控的轮播切换特效
2015/04/13 Javascript
全面详细的jQuery常见开发技巧手册
2016/02/21 Javascript
JS实现类似51job上的地区选择效果示例
2016/11/17 Javascript
javascript实现滑动解锁功能
2017/03/22 Javascript
swiper移动端轮播插件(触碰图片之后停止轮播)
2017/12/28 Javascript
原生JS实现多个小球碰撞反弹效果示例
2018/01/31 Javascript
JavaScript 日期时间选择器一些小结
2018/04/02 Javascript
Vue源码分析之Vue实例初始化详解
2019/08/25 Javascript
vue集成openlayers加载geojson并实现点击弹窗教程
2020/09/24 Javascript
[55:35]VGJ.S vs Mski Supermajor小组赛C组 BO3 第二场 6.3
2018/06/04 DOTA
python3实现短网址和数字相互转换的方法
2015/04/28 Python
基于wxpython实现的windows GUI程序实例
2015/05/30 Python
TensorFLow用Saver保存和恢复变量
2018/03/10 Python
解决Python找不到ssl模块问题 No module named _ssl的方法
2019/04/29 Python
Django Channels 实现点对点实时聊天和消息推送功能
2019/07/17 Python
使用CSS3来制作消息提醒框
2015/07/12 HTML / CSS
建筑设计专业求职自我评价
2014/03/02 职场文书
签约仪式主持词
2014/03/19 职场文书
小学评语大全
2014/04/22 职场文书
大队干部竞选演讲稿
2014/04/28 职场文书
教师先进工作者事迹材料
2014/05/01 职场文书
走群众路线剖析材料
2014/10/09 职场文书
2015年医德考评自我评价
2015/03/03 职场文书
导游词之北京明十三陵
2019/10/28 职场文书
Spring事务管理下synchronized锁失效问题的解决方法
2022/03/31 Java/Android