`
ice-cream
  • 浏览: 328433 次
  • 性别: Icon_minigender_2
  • 来自: 上海
社区版块
存档分类
最新评论

table表格的常用功能

阅读更多

就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列)

$("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前
       }
});			

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

 

可以看看附件的运行效果

  • 大小: 155.9 KB
分享到:
评论
35 楼 guji528 2009-08-17  
功能很强啊!
js的东西看得真是挺晕的。
34 楼 jetyou 2009-07-27  
你做的?呵呵,哈哈
33 楼 yaolifei 2009-07-15  
maike 写道
刚看了下,要是有排序就更好


有一个tablesort插件,就是用来排序的
32 楼 yaolifei 2009-07-15  
点折叠的时候,第一次不起作用,第二次才开始有用,有的地方折叠和展开反掉了,请检查一下
31 楼 googh 2009-07-15  
IE6 要点2次 ,才能折叠
30 楼 long546324 2009-03-21  
学习一下
29 楼 ice-cream 2009-03-18  
hanjs 写道
lz,为何我用ie7,在点 topic 的时候进行高亮显示的时候有脚本错误.无法再取消高亮了.

call()函数出了问题,去掉就好了
28 楼 hanjs 2009-03-18  
lz,为何我用ie7,在点 topic 的时候进行高亮显示的时候有脚本错误.无法再取消高亮了.
27 楼 zhdsh1979 2009-02-07  
学习一下,谢谢啊
26 楼 xo_knight 2009-01-29  
其实在jquery基础教程那本书里第七章有个很相似的例子。。。
25 楼 edielei 2009-01-24  
楼主好厉害。佩服!
24 楼 shouzhi2007 2009-01-21  
好东西,学习一下
23 楼 jieyee 2009-01-16  
ebeach 写道
看着眼熟,好像都是《JQuery基础教程》里的东东

I agree
22 楼 nighthawk 2008-12-31  
非常不错,
不过“折叠”功能在IE7下有个小小的BUG,第一次进入页面的时候点“-”号得点2次才能折叠,alert一下toggleSrc,应该是图片路径的问题。在firefox和chrome下无此问题。
21 楼 daoyongyu 2008-12-24  
学习下。正在学习JQuery
20 楼 rk1982 2008-12-22  
有一定收藏价值,歇歇了。
19 楼 jiangshaolin 2008-12-19  
firefox下,有点问题,高亮条纹没出来.
18 楼 flysunsystem 2008-12-19  
挺不错啊。不知道,是否考虑过拖拽?和内容很多的情况啊?
17 楼 siashuayongsheng 2008-12-19  
谢谢了,好东西大学分
16 楼 kenbli 2008-12-18  
好東西,學習,學習~~!

相关推荐

    table表格的常用功

    table表格的常用功能 - JQuerytable表格的常用功能 - JQuerytable表格的常用功能 - JQuerytable表格的常用功能 - JQuerytable表格的常用功能 - JQuery

    uni-app table表格

    在uni-app框架中,`table`组件是一种用于展示数据的常用元素,尤其在处理列表或者表格数据时。uni-app是一个跨平台的前端开发框架,它允许开发者使用Vue.js语法编写代码,一次编写,多端运行,包括iOS、Android、H5...

    table表格内容上下移动的三种实现方法

    在网页设计中,HTML表格(Table)是一种常用的数据展示方式,有时我们需要实现表格内容的上下移动功能,以满足用户交互需求或数据操作便利性。本篇文章将详细讲解三种实现HTML表格内容上下移动的方法。 方法一:...

    将bootstrap-table表格翻译为中文

    通过以上步骤,你的Bootstrap-table表格就成功地被翻译成了中文。这个过程不仅可以帮助中文用户更好地理解和使用你的网页,也有利于提升用户体验。在未来,如果计划介绍Bootstrap-table的简单使用,可以涵盖表格的...

    Bootrap table表格示例

    在"Bootstrap Table表格示例"中,我们可以学习如何利用Bootstrap的表格类来格式化HTML表格,使其具有Bootstrap的样式和功能。Bootstrap表格支持多种样式,包括条纹、边框、hover效果以及对齐方式等,这些都可以通过...

    table-rowspan表格自动合并单元格插件

    在IT领域,尤其是在网页开发中,表格(Table)是一种常用的数据展示方式。"table-rowspan表格自动合并单元格插件"是专为HTML表格设计的一种工具,它允许开发者通过简单的操作实现单元格的动态合并、添加和删除,极大...

    layui table中的列为checkbox 使layui中table表格中的列单元格显示为单选框checkbox

    此外,你可能还会注意到压缩包中的其他链接,如“layui admin table表格中根据后台数据动态渲染switch开关”和“layui中的switch开关”。switch开关是layui中另一种常用的表单元素,用于呈现开/关的状态。它通常用于...

    HTML页面table表格固定行和列

    在网页设计中,HTML表格(`&lt;table&gt;`)是一种常用的数据展示方式,尤其在处理大量结构化数据时。然而,当表格内容过于庞大,导致表格的长度和宽度超过屏幕显示范围时,用户需要滚动查看完整内容,这可能使得表头和...

    实现table表格checkbox复选框的全选 反选

    在网页开发中,表格(Table)是常用的数据展示方式,而复选框(Checkbox)则为用户提供多选功能。在HTML的表格中实现复选框的全选与反选功能,能够大大提升用户体验,使用户可以便捷地选择一组数据。这里我们将详细...

    table 表格宽度拖动demo

    在IT领域,尤其是在前端开发中,表格(Table)是一种常用的数据展示方式,它能够清晰、规整地排列信息。在实际应用中,用户有时需要根据自身需求调整表格列的宽度,以便更好地查看和理解数据。"table 表格宽度拖动...

    table表格排序效果源码下载

    而“table表格排序效果”则是提高用户体验的重要功能,允许用户根据某一列的数据对整个表格进行升序或降序排列。这个“table表格排序效果源码下载”提供了一个实现这一功能的代码示例。 排序功能对于处理大量数据至...

    前台js将table转为Excel表格下载

    本文将详细讲解如何使用JavaScript实现这一功能,主要基于提供的资源,特别是"前台js将table转为Excel表格下载"这个主题。 首先,我们要理解JavaScript(简称js)是一种在客户端运行的脚本语言,它可以与HTML和CSS...

    bootstrap-table.css 表格拖拽排序

    Bootstrap表格是前端开发中常用的组件,它提供了丰富的样式和功能,使得网页中的数据展示更加美观且易用。在本主题中,我们关注的是"bootstrap-table.css 表格拖拽排序",这是一种允许用户通过鼠标拖放操作来改变...

    Table表格排序显示jQuery代码

    在网页开发中,数据展示是不可或缺的一部分,而Table表格是最常用的数据展示方式之一。"Table表格排序显示jQuery代码"是一个实用的工具,它允许用户通过简单的点击表头来实现表格数据的多维度排序,包括分类排序、...

    JS+CSS的table表格特效

    "JS+CSS的table表格特效"是一个利用JavaScript(JS)和层叠样式表(CSS)来增强HTML表格功能的例子,旨在提高用户体验并增加交互性。在这个项目中,我们可以看到几个关键的技术点: 1. **复选框全选**:这是表格中...

    layui的表格table选中数据后可打印本行数据

    在Web开发中,layui是一个非常流行的前端框架,它提供了丰富的组件和美观的界面设计,而表格(table)是其中常用的一个元素。本示例主要关注如何在layui的表格中实现选中某一行数据后,仅将该行数据打印的功能。这个...

    table表格无刷新翻页排序

    "Table表格无刷新翻页排序"是一个利用JavaScript实现的技术方案,它允许用户在不重新加载整个页面的情况下,对表格进行分页浏览和内容排序,提升了用户体验。 首先,我们要理解这个技术的核心——AJAX...

    SWT Table单元格编辑功能

    其中,`Table`控件是SWT中最常用的数据展示组件之一,尤其适用于展示表格形式的数据。本文将深入探讨SWT `Table`控件中的单元格编辑功能,并通过实例代码进行详细解析。 #### 1. 创建TableEditor `TableEditor`是...

    Table常用的几种CSS样式

    参考链接提供的资源《Top 10 CSS Table Designs》提供了更多灵感和实例,可以帮助开发者进一步提升表格的美观性和功能性。在实际工作中,应不断探索和学习新的CSS技术,以适应不断变化的网页设计趋势。

    jsp页面table表格超方便的(仿.net)编辑操作(js控制)

    标题提到的"jsp页面table表格超方便的(仿.net)编辑操作(js控制)"是关于如何在JSP页面中实现一个功能强大的表格,允许用户对表格内容进行编辑。这个主题主要涵盖了两个关键技术:JSP与JavaScript。 首先,JSP...

Global site tag (gtag.js) - Google Analytics