`

jquery表格常用操作(转帖)

阅读更多

就table的一些常用操作做了一个综合的例子,包括行条纹 高亮 工具条提示 扩展 折叠 筛选等效果。

 

效果图如下:

 

 

 

下面我把我写的例子拆分解释一下:

 

1 . 行条纹

 
var rowIndex = 0;
$("tbody tr").each(function(index){
	if($("th",this).length){//检查当前行是否包含th元素
		$(this).addClass("subhead");
		rowIndex = -1;
	}
       else{
               if(rowIndex%4 < 2){
	                  $(this).removeClass("odd").addClass("even");//为奇数组添加even样式
               }
               else{
	                  $(this).removeClass("even").addClass("odd");//为偶数组添加odd样式
               }
        }
        rowIndex++;	
)};

这段代码(rowIndex%4 < 2)是两行一组交替换色。

如果是三行一组交替换色,就是rowIndex%6 < 3,...依次类推。

通常情况下我们用到最多的是隔行换色,比这个两行一组交替换色要简单。

jquery提供了方法:

:even : 匹配所有索引值为偶数的元素,从 0 开始计数。例如$("tr:even");

:odd:匹配所有索引值为奇数的元素,从 0 开始计数。例如$("tr:odd")。

或者用:nth-child(index):匹配其父元素下的第N个子或奇偶元素,从1开始计数。例如(":nth-child(2)"偶数行)

 

2 .高亮(突出显示行)

 
var column = 3;
$("table.striped tbody tr").each(function(index){
	$("td:nth("+column+")",this).addClass("clickable").click(function(){
		var thisClicked = $(this).text();//把当前单击的td标签内容赋给变量
		$("table.striped tbody tr").each(function(){//遍历tbody里的所有tr标签	
		        if(thisClicked == $("td:nth("+column+")",this).text()){//检查tbody当前列里是否有和单击的td标签内容匹配的td
			        $(this).addClass("highlight");
			}
			else{
				$(this).removeClass("highlight");
			}
		});
	})	
}); 

这段代码可以增强表格的视觉效果,是基于用户的交互突出显示相关的行。

 

3 .工具条提示

var highlighted ="";
//定位工具提示条
var positionTooltip = function(event){
	var tPosX = event.pageX - 5;
	var tPosY = event.pageY + 20;
	$("div.tooltip").css({left:tPosX,top:tPosY});
};
//显示工具提示条
var showTooltip = function(event){
	$("div.tooltip").remove();
	var $thisTopic = $(this).text();
	if($(this).parent().is(".highlight")){//检查当前tr的样式是否是highlight
		highlighted = "un-";	
	}
	else{
		highlighted = ""		
	}
	$("<div class='tooltip'>Click to " + highlighted + "highlight all topics written by " + $thisTopic + "</div>").appendTo("body");
       //给工具提示条增加内容,
       //如果当前tr的样式是highlight,那么工具条的内容是:Click to un-highlight all topics written by $thisTopic;
       //如果当前tr的样式不是highlight,那么工具条的内容是:Click to highlight all topics written by $thisTopic.
       positionTooltip(event);
};
//隐藏工具提示条
var hideTooltip = function(){
	$("div.tooltip").remove();
};

  尽管行突出效果是一种很有用的特性,但就目前来讲,这些特性存在与否对用户而言并不明显。尽管我们可以为所有要单击的标签添加clickable类,使鼠标悬停在这些标签上时,光标变成手的形状。当用户仍然无从知晓单击这个标签会发生什么事情。为此,进一步添加与单击会发生的情况有关的说明是必要的。


4 .折叠和扩展

var toggleMins = "images/iconopen.gif";
var togglePlus = "images/iconclose.gif";
var $subHead = $("tbody th:first-child");
$subHead.prepend("<img src='"+toggleMins+"' alt='collapse this section' />");
$("img",$subHead).addClass("clickable").click(function(){
	var toggleSrc = $(this).attr("src");
	if(toggleSrc == toggleMins){
		$(this).attr("src",togglePlus).parents("tr").siblings().fadeOut("fast");	
	}
	else{
		$(this).attr("src",toggleMins).parents("tr").siblings().not(".filtered").fadeIn("fast");		
	}
});

这里用了fadeIn(speed) 和fadeOut(speed)方法,speed (String,Number) :三种预定速度之一的字符串("slow", "normal", or "fast")或表示动画时长的毫秒数值(如:1000)

当表格中以分组的方式包含大量的数据时,如果能都折叠或者隐藏一部分表格的内容,就可以减少页面滚动,从而方便对表格中的所有数据进行更清晰地查看。

 

5 .筛选(Filter by Topic列)

Js代码 复制代码

       

$("table.striped").each(function(){
	var $table = $(this);
	$table.find("th").each(function(){
		if($(this).is(".filter-column")){
               //把样式为filter-column的div赋给变量$filters
               var $filters = $("<div class='filter-column'><h3>Filter by " +$(this).text()+ ":</h3></div>");	
               //把topic一列所有出现的过的关键字加到keywords数组
               var keywords = {};
		$table.find("tbody tr td").filter(":nth-child(" + (column+1) + ")").each(function(){
			keywords[$(this).text()] = $(this).text();
		});
               //在样式为filter-column的div加一个all按钮,显示所有的表格行		
	        $("<div class='filter'>all</div>").click(function(){
			$table.find("tbody tr").show();
			$(this).addClass("active").siblings().removeClass("active");
			$("img","tbody tr th").attr("src",toggleMins);
		}).addClass("clickable active").appendTo($filters);
               
               $.each(keywords,function(index,keyword){
			$("<div class='filter'></div>").text(keyword).bind("click",{"keyword":keyword},function(event){
			        $table.find("tbody tr").each(function(){
				if($("td",this).filter(":nth-child(" + (column+1) + ")").text() == event.data["keyword"]){
					$(this).show();
				}
				else if($("th",this).length == 0){
					$(this).hide();
				}
			});	
			$(this).addClass("active").siblings().removeClass("active");				
			}).addClass("clickable").appendTo($filters);//把内容为keywords样式为filter的div加入到样式为filter-column的div里
             });
            $filters.insertBefore($table);//把样式为filter-column的div插入到table前
       }
});			

 通过只向用户显示匹配给定条件的表格行,可以省去用户不必要的分心。

分享到:
评论

相关推荐

    jquery表格操作实例

    本篇文章将深入探讨jQuery在表格操作方面的应用实例,这对于前端开发人员来说是极其重要的技能。 首先,我们需要理解jQuery是如何选择和操作HTML元素的。使用jQuery的选择器,如`$("#tableId")`,可以轻松地选取...

    jquery 操作表格

    本文将深入探讨如何使用jQuery操作表格,基于给出的资源,我们可以看到一个与表格相关的示例。 首先,"tb-bg.gif"可能是一个表格背景图像,用于美化表格的视觉效果。在网页设计中,背景图片可以提升表格的整体风格...

    jquery表格排序操作

    本示例“jquery表格排序操作”是基于jQuery实现的,旨在帮助开发者快速集成和实现表格数据的动态排序功能,尤其适用于myeclipse开发环境。开源精神是其核心,提倡分享与互助,无需积分即可获取和使用。 表格排序...

    jquery表格变色

    jquery表格变色jquery表格变色jquery表格变色jquery表格变色jquery表格变色jquery表格变色jquery表格变色jquery表格变色jquery表格变色jquery表格变色jquery表格变色jquery表格变色

    jQuery表格可拖动调整列宽度大小

    总结起来,jQuery表格可拖动调整列宽度大小是一项涉及DOM操作、事件处理、样式修改和可能的动画效果的技术。通过理解和应用这些知识点,开发者可以创建出更用户友好的网页应用,提升用户的交互体验。在实际项目中,...

    jquery表格控件

    《jQuery表格控件深度解析与应用实践》 在Web开发领域,jQuery表格控件作为一款功能强大的工具,深受开发者喜爱。其丰富的特性、高效的性能以及易于使用的API,使其成为实现数据展示、操作和管理的理想选择。本文将...

    jquery插件--表格分页

    jQuery提供了一种简洁的API,让DOM操作、事件处理、动画制作和Ajax交互变得容易。 2. 表格分页概念:表格分页是将大量数据分段显示在多个页面上,用户可以逐页浏览,避免一次性加载过多数据导致页面响应慢或用户...

    使用jquery实现表格动态分页

    本教程将详细讲解如何使用jQuery库来实现表格的动态分页,同时结合Java后端进行数据的动态查询和分页处理。 首先,让我们了解动态分页的基本原理。动态分页是指在用户滚动或点击分页按钮时,仅加载当前显示的数据,...

    jQuery表格插件仿Excel表格排序修改效果

    在本主题“jQuery表格插件仿Excel表格排序修改效果”中,我们将深入探讨如何利用jQuery实现类似Excel的表格排序功能,并对其进行优化和定制。 首先,我们需要了解jQuery表格插件的基础。常见的jQuery表格插件有...

    jquery操作表格增加删除

    本文将详细讲解如何使用jQuery来操作表格,实现增删功能。 一、表格的基本结构 HTML表格由`&lt;table&gt;`标签定义,其中包含`&lt;tr&gt;`(行)标签,`&lt;th&gt;`(表头)和`&lt;td&gt;`(数据单元格)标签。例如: ```html 姓名 ...

    纯Jquery表格全选+反选+增删查找

    纯Jquery表格全选+反选+增删查找,一个简陋版本,仅供参考,细节处理不周到处请评论,后期有空修改

    jQuery表格信息自动向上滚动代码.zip

    总的来说,利用jQuery实现表格自动向上滚动是提高用户体验的有效方法,它结合了事件处理、动画和DOM操作等多个jQuery的核心特性。通过以上步骤和示例,你可以轻松地将这个功能应用到自己的项目中。

    jquery表格树插件

    **jQuery表格树插件详解** 在网页开发中,表格数据的展示经常需要处理大量结构化的信息,而将这些数据组织成树形结构可以更清晰地展现层级关系,提高用户的浏览体验。`jQuery表格树插件`就是为此目的设计的工具,它...

    jQuery表格键盘操作插件 jquery KeyTable调用示例.rar

    jQuery表格键盘操作插件 jquery KeyTable调用示例,这款插件允许用户在表格移动/选择数据像键盘操作Excel那样,不依赖鼠标就可完成各项操作.并且高亮当前操作的表格单元格.运行效果请参见截图,本源码包内含有调用本...

    原创jQuery表格插件

    【原创jQuery表格插件】是一种基于JavaScript库jQuery开发的组件,旨在增强网页中的表格功能,使其具有更丰富的交互性和灵活性。jQuery是一个广泛使用的JavaScript库,它简化了HTML文档遍历、事件处理、动画以及Ajax...

    Datatables jquery表格插件

    Datatables是一款基于jQuery的开源表格插件,广泛应用于网页数据展示和管理。它以其丰富的功能、高度的灵活性和良好的社区支持而备受青睐。这个插件的主要目标是将静态或者动态生成的HTML表格转变为具有强大交互性的...

    jquery表格排序

    总结来说,"jquery表格排序"是一个利用jQuery的便利性和灵活性实现的实用功能,它涉及到HTML和JavaScript的基本知识,以及DOM操作、事件处理和数据排序等进阶技巧。通过学习和应用这些知识点,开发者可以构建出功能...

    jquery表格增删改查.rar

    《jQuery表格增删改查详解——基于Bootstrap框架》 在Web开发中,表格的数据操作是常见且重要的功能,包括添加、删除、修改和查询。本教程将深入探讨如何利用jQuery和Bootstrap框架实现这一功能,特别适合初学者...

    jquery 表格树

    总结,jQuery表格树提供了一种有效的方式,将复杂的数据结构以直观、易操作的树形模式展示出来,极大地提高了用户体验。通过熟练掌握和应用jQuery TreeTable,开发者可以在网页中创建出强大而富有交互性的数据展示...

    jquery表格自动排序插件

    在IT行业中,jQuery是一款...总之,jQuery表格自动排序插件是一个强大的工具,它提高了Web应用中表格数据管理的便捷性。通过理解它的工作原理和正确使用方式,开发者能够提升用户体验,使数据呈现更加有序和易于操作。

Global site tag (gtag.js) - Google Analytics