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当onmousedown、onmouseup、onclick同时应用于同一个标签节点Element
Jan 05 Javascript
Javascript技巧之不要用for in语句对数组进行遍历
Oct 20 Javascript
基于jquery的$.ajax async使用
Oct 19 Javascript
Javascript 异步加载详解(浏览器在javascript的加载方式)
May 20 Javascript
Iframe 自动适应页面的高度示例代码
Feb 26 Javascript
一个JavaScript获取元素当前高度的实例
Oct 29 Javascript
浅谈JavaScript 框架分类
Nov 10 Javascript
基于jquery animate操作css样式属性小结
Nov 27 Javascript
JavaScript解析JSON格式数据的方法示例
Jan 24 Javascript
jquery插件canvaspercent.js实现百分比圆饼效果
Jul 18 jQuery
JS实现导出Excel的五种方法详解【附源码下载】
Mar 15 Javascript
微信小程序提交form操作示例
Dec 30 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学习教程之第2天
2008/06/15 PHP
php foreach、while性能比较
2009/10/15 PHP
在Windows下编译适用于PHP 5.2.12及5.2.13的eAccelerator.dll(附下载)
2010/05/04 PHP
php常用Stream函数集介绍
2013/06/24 PHP
PHP通过串口实现发送短信
2015/07/08 PHP
3种php生成唯一id的方法
2015/11/23 PHP
PHP实现一个多功能购物网站的案例
2017/09/13 PHP
php下的原生ajax请求用法实例分析
2020/02/28 PHP
jQuery 点击图片跳转上一张或下一张功能的实现代码
2010/03/12 Javascript
使用jquery获取网页中图片高度的两种方法
2013/09/26 Javascript
Extjs grid panel自带滚动条失效的解决方法
2014/09/11 Javascript
jquery图片倾斜层叠切换特效代码分享
2015/08/27 Javascript
layui表格实现代码
2017/05/20 Javascript
前端构建工具之gulp的配置与搭建详解
2017/06/12 Javascript
实例分析js事件循环机制
2017/12/13 Javascript
JS实现的base64加密解密操作示例
2018/04/18 Javascript
详解原生JS回到顶部
2019/03/25 Javascript
js this 绑定机制深入详解
2020/04/30 Javascript
在vue-cli3.0 中使用预处理器 (Sass/Less/Stylus) 配置全局变量操作
2020/08/10 Javascript
探索浏览器页面关闭window.close()的使用详解
2020/08/21 Javascript
[54:53]完美世界DOTA2联赛PWL S2 GXR vs PXG 第二场 11.18
2020/11/18 DOTA
python 全文检索引擎详解
2017/04/25 Python
python在ubuntu中的几种安装方法(小结)
2017/12/08 Python
Python利用matplotlib做图中图及次坐标轴的实例
2019/07/08 Python
python 线程的五个状态
2020/09/22 Python
html5 Canvas画图教程(4)—未闭合的路径及渐变色的填充方法
2013/01/09 HTML / CSS
html2canvas生成的图片偏移不完整的解决方法
2020/05/19 HTML / CSS
时装界的“朋克之母”:Vivienne Westwood
2017/07/06 全球购物
Linux的主要特性
2016/09/03 面试题
中层干部竞争上岗演讲稿
2014/01/13 职场文书
2014年清明节网上祭英烈寄语
2014/04/09 职场文书
明星员工获奖感言
2014/08/14 职场文书
2015年房地产个人工作总结
2015/05/26 职场文书
社区低保工作总结2015
2015/07/23 职场文书
2016国庆促销广告语
2016/01/28 职场文书
jQuery实现影院选座订座效果
2021/04/13 jQuery