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 addBookmark 加入收藏 多浏览器兼容
Aug 15 Javascript
日期处理的js库(迷你版)--自建js库总结
Nov 21 Javascript
JavaScript高级程序设计(第3版)学习笔记12 js正则表达式
Oct 11 Javascript
设置jsf的选择框h:selectOneMenu为不可编辑状态的方法
Jan 07 Javascript
JS判断、校验MAC地址的2个实例
May 05 Javascript
jQuery入门介绍之基础知识
Jan 13 Javascript
jquery实现图片上传之前预览的方法
Jul 11 Javascript
Bootstrap的fileinput插件实现多文件上传的方法
Sep 05 Javascript
js日期相关函数dateAdd,dateDiff,dateFormat等介绍
Sep 24 Javascript
express+mockjs实现模拟后台数据发送功能
Jan 07 Javascript
vue实现输入框的模糊查询的示例代码(节流函数的应用场景)
Sep 01 Javascript
vue实现导航菜单和编辑文本的示例代码
Jul 04 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 参数过滤、数据过滤详解
2015/10/26 PHP
PHP多维数组指定多字段排序的示例代码
2018/05/16 PHP
JS DOM 操作实现代码
2010/08/01 Javascript
整理一些JavaScript的IE和火狐的兼容性注意事项
2011/03/17 Javascript
js实现带关闭按钮始终显示在网页最底部工具条的方法
2015/03/02 Javascript
javascript表格隔行变色加鼠标移入移出及点击效果的方法
2015/04/10 Javascript
javascript之Boolean类型对象
2016/06/07 Javascript
jQuery 操作input中radio的技巧
2016/07/18 Javascript
利用D3.js实现最简单的柱状图示例代码
2016/12/09 Javascript
Nodejs 发送Post请求功能(发短信验证码例子)
2017/02/09 NodeJs
解决Extjs下拉框不显示的问题
2017/06/21 Javascript
jQuery选择器之表单元素选择器详解
2017/09/19 jQuery
js登录滑动验证的实现(不滑动无法登陆)
2018/01/03 Javascript
Vue在页面右上角实现可悬浮/隐藏的系统菜单
2018/05/04 Javascript
深入理解Vue父子组件生命周期执行顺序及钩子函数
2018/08/12 Javascript
Vue.js实现可排序的表格组件功能示例
2019/02/19 Javascript
vue 解决provide和inject响应的问题
2020/11/12 Javascript
详解用TensorFlow实现逻辑回归算法
2018/05/02 Python
Pycharm 设置自定义背景颜色的图文教程
2018/05/23 Python
对Python捕获控制台输出流的方法详解
2019/01/07 Python
python+selenium实现简历自动刷新的示例代码
2019/05/20 Python
python实现动态数组的示例代码
2019/07/15 Python
深入了解Python在HDA中的应用
2019/09/05 Python
浅析python中while循环和for循环
2019/11/19 Python
Keras实现支持masking的Flatten层代码
2020/06/16 Python
python 中关于pycharm选择运行环境的问题
2020/10/31 Python
CSS3教程(2):网页边框半径和网页圆角
2009/04/02 HTML / CSS
阿迪达斯丹麦官网:adidas丹麦
2016/10/01 全球购物
印度尼西亚手表和包包商店:Urban Icon
2019/12/12 全球购物
"火柴棍式"程序员面试题
2014/03/16 面试题
大学生专科学习生活的自我评价
2013/12/07 职场文书
学习党课思想汇报
2013/12/29 职场文书
设备动力科岗位职责范本
2014/02/23 职场文书
《恐龙》教学反思
2014/04/27 职场文书
优秀少先队员事迹材料
2014/12/24 职场文书
2019关于实习生工作安排及待遇的管理方案!
2019/07/16 职场文书