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 相关文章推荐
Jquery写一个鼠标拖动效果实现原理与代码
Dec 24 Javascript
JavaScript中的字符串操作详解
Nov 12 Javascript
JS实现方向键切换输入框焦点的方法
Aug 19 Javascript
BootStrap入门教程(三)之响应式原理
Sep 19 Javascript
基于Phantomjs生成PDF的实现方法
Nov 07 Javascript
vuex state及mapState的基础用法详解
Apr 19 Javascript
详解Vue单元测试case写法
May 24 Javascript
iview在vue-cli3如何按需加载的方法
Oct 31 Javascript
JavaScript获取某一天所在的星期
Sep 05 Javascript
vue实现全屏滚动效果(非fullpage.js)
Mar 07 Javascript
在Webpack中用url-loader处理图片和字体的问题
Apr 28 Javascript
浅谈JS的二进制家族
May 09 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字符串 ==比较运算符的副作用
2009/10/21 PHP
php观察者模式应用场景实例详解
2017/02/03 PHP
解决使用attachEvent函数时,this指向被绑定的元素的问题的方法
2007/08/13 Javascript
JavaScript效率调优经验
2009/06/04 Javascript
JS input文本框禁用右键和复制粘贴功能的代码
2010/04/15 Javascript
javascript textContent与innerText的异同分析
2010/10/22 Javascript
JS+ACTIVEX实现网页选择本地目录路径对话框
2013/03/18 Javascript
拖动table标题实现改变td的大小(css+js代码)
2013/04/16 Javascript
jquery.map()方法的使用详解
2015/07/09 Javascript
JavaScript数组的栈方法与队列方法详解
2016/05/26 Javascript
JavaScript中的Number数字类型学习笔记
2016/05/26 Javascript
AngularJS基础 ng-keypress 指令简单示例
2016/08/02 Javascript
微信小程序 wx:for的使用实例详解
2017/04/27 Javascript
js 监控iframe URL的变化实例代码
2017/07/12 Javascript
Javacript中自定义的map.js  的方法
2017/11/26 Javascript
优雅的elementUI table单元格可编辑实现方法详解
2018/12/23 Javascript
基于vue实现滚动条滚动到指定位置对应位置数字进行tween特效
2019/04/18 Javascript
Layui表格监听行单双击事件讲解
2019/11/14 Javascript
[59:26]DOTA2上海特级锦标赛D组资格赛#1 EG VS VP第二局
2016/02/28 DOTA
python函数缺省值与引用学习笔记分享
2013/02/10 Python
Linux环境下MySQL-python安装过程分享
2015/02/02 Python
Python使用Redis实现作业调度系统(超简单)
2016/03/22 Python
python 内置函数filter
2017/06/01 Python
Django model update的多种用法介绍
2020/03/28 Python
python区分不同数据类型的方法
2019/10/14 Python
CSS3打造磨砂玻璃背景效果
2016/09/28 HTML / CSS
Luxplus丹麦:香水和个人护理折扣
2018/04/23 全球购物
办公室文员自荐书
2014/02/03 职场文书
会计学自我鉴定
2014/02/06 职场文书
领导党的群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
2015会计试用期工作总结
2014/12/12 职场文书
同意报考公务员证明
2015/06/17 职场文书
2016继续教育培训学习心得体会
2016/01/19 职场文书
Win11怎样将锁屏账户头像图片改成动画视频
2021/11/21 数码科技
Nginx 匹配方式
2022/05/15 Servers
css如何把元素固定在容器底部的四种方式
2022/06/16 HTML / CSS