`
xiaomaha
  • 浏览: 20579 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

jquery 自定义插件(操作table、编辑table、表头拖动、隔行换色等.....),可按需求配置,在加一个可拖动的DIV代码

阅读更多
open-open.com 看到N多老外写的插件

于是今天看了下jquery文档也自己来两个,献丑啦!

需求:

一:操作table
1、无侵入式可编辑

2、隔行换色

3、拉动表头,自定义宽度

4、可编辑

5、编辑后的数据颜色区分

5、css文件自己定义,无需和插件绑定,这样更加灵活

6、一切可配置


1:名字就叫bestTable

二:拖动div

万恶的IE6,在自定义的js文件中有时候加备注会让IE6报错,我非常蛋疼,可能是中文注释的原因所以键盘事件的代码取消了注释,一切正常,只要在一写备注ie6就运行不了,

jquery.bestTable.js

(function($){   
	
    $.fn.bestTable = function(options)
    {   
        /**
         * isDrog 是否可以拖动表头宽度
       	 * oddtrBackgroundColor odd背景颜色
       	 * isEffect 是否开启鼠标特效
       	 * effectBackgroundColor 鼠标移动后的背景色
       	 * isEditor 是否开启可编辑状态
       	 * isEditorNewColor 编辑状态背景色
       	 * isEditorNewColor 是否开启编辑后状态
       	 * editorNewColorBackgroundColor 编辑后背景色
       	 */
		var defaults = {
			isDrog : true,
			oddtrBackgroundColor:"#EEE",
			isEffect:true,
			effectBackgroundColor:"#CCCCCC",
			isEditor:true,
			editorBackgroundColor:"#FFFFCC",
			isEditorNewColor:true,
			editorNewColorBackgroundColor : "0099FF"
		};
		var opts = $.extend(defaults, options);
		
       
      	var backgroundColor='background-color';
		$(this).each(function()
		{
			
			
			//获取当前table
			var newTable= $(this);
			//是否允许拖动表头
			if(opts.isDrog)drog(newTable); //鼠标拖动th
			
			$(newTable).find("tbody tr:odd").css(backgroundColor,opts.oddtrBackgroundColor);
			//获取当前table中tbody中的td
			var newtd = $(newTable).find('tbody td');
			
			//编辑状态(鼠标变手形)和鼠标特效状态(改变背景色)都需要给当前td设置mouseover
			newtd.mouseover(function(){
				//保存当前td的背景色
				var oldbackgroundColor=$(this).css(backgroundColor);
				if(opts.isEffect)//启动特效状态
				{
					
					$(this).css({'cursor':'pointer',backgroundColor:opts.effectBackgroundColor});//修改鼠标为手状、修改背景色
					
					$(this).mouseout(function(){
						$(this).css({backgroundColor:oldbackgroundColor}); //光标移开后恢复到最初背景色
					});
				}
			});
			
			//不允许编辑
			if(!opts.isEditor)return false;
			//单击td
			newtd.click(function(){
				var td = $(this);
				//判断当前td中是否已经包含了inpu文本框
				if(td.children("input").length>0){return false};
				//为当前td添加一个编辑框临时input   
                    var inputObject = $("<input type='text'/>").height("100%").width("100%").css({   
                        "font-size":td.css("font-size"),   
                        backgroundColor:opts.editorBackgroundColor,   
                        "border-width":0   
                    });
                    //取消当前input文本框单击事件   
                    inputObject.click(function(){return false});   
                    //获取td文本框放入一个变量
                    var tdText = td.html();
                    //将td中的文本框赋值给input中   
                    inputObject.val(tdText);
                    //将input放入td文本框当中   
                    td.html(inputObject);
                    //选中编辑区域 兼容所有浏览器   
                    inputObject.trigger("focus").trigger("select");
                    
                    
                    inputObject.blur(function(){ 
                        //恢复td的文本   
                        td.html(tdText);   
                        //删除input   
                        $(this).remove();   
                    });
                    
                    //键盘  
                    inputObject.keydown(function(event){   
                        var keyCode = event.which;
                        switch(keyCode){   
                            case 13:
                            var inputText = $(this).val();   
                            td.html(inputText);   
                            $(this).remove();   
                            if(!opts.isEditorNewColor)return false;   
                            td.css(backgroundColor,opts.editorNewColorBackgroundColor);
                            break;   
                            case 27: 
                            td.html(tdText);     
                            $(this).remove();     
                            break;   
                        }   
       
                    });       
			});
			
			
		});
        //很少的代码实现拖动表头
		function drog(table){
			
			var tr = $(table).find("thead tr");
			
			var th = $(table).find('thead tr th');
			
			$(tr).mousemove(function(event){
				
				$(this).css("cursor","e-resize");
				
			});
			
			$(th).mousedown(function(event){
				
				$(this).mousemove(function(e){

					var width = $(this).width();
					
					var px = e.clientX-event.clientX;
					
					$(this).width(width+px);

				});
				
			});
			$(th).mouseup(function(){
				
				$(th).unbind('mousemove');
				
			});	
		}
    };   
	
})(jQuery);  


页面 引入 jquery.js 和 自定义的 jquery.bestTable.js
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>a.html</title>
	
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="this is my page">
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    <script type="text/javascript" src="js/jquery.min.js"></script>
    <script type="text/javascript" src="js/jquery.bestTable.js"></script>
	
	<script type="text/javascript">
		$(document).ready(function()   
        {   
            //最简单配置  默认配置   
            $('table#demo').bestTable();   
               
               
            //按需求配置   
            $('table#demo2').bestTable({   
            	isDrog:false, //不允许拖动表头宽度
                oddtrBackgroundColor:'red', //改变odd背景色   
                isEffect:false, //关闭鼠标滑动特效   
                isEditorNewColor:false //编辑完成后不改变背景色   
            });   
        });   

	</script>

	<style>
		
		table {
		  border: solid 1px #D5D5D5;
		  border-collapse: collapse;
		  
		  height:auto;
  
		}

		tbody td {
			border:1px solid #D5D5D5;
			font-size:12px;
		}

		thead th {
			border:1px solid #D5D5D5;
			background-color:#EEE;
			font-size:12px;
		
		}
	</style> 

  </head>
  
  <body>
  	
  <!-- demo -->
  		<table id="demo">
     	<thead>
     		<tr>
     			<th>userName</th>
     			<th>email</th>
     			<th>sex</th>
     		</tr>
     	</thead>
     	<tbody>
     		<tr>
     			<td>胡**</td>
     			<td>1016181216@163.com</td>
     			<td>男</td>
     		</tr>
     		<tr>
     			<td>胡**</td>
     			<td>1016181216@163.com</td>
     			<td>男</td>
     		</tr>
     		<tr>
     			<td>胡**</td>
     			<td>1016181216@163.com</td>
     			<td>男</td>
     		</tr>
     		<tr>
     			<td>胡**</td>
     			<td>1016181216@163.com</td>
     			<td>男</td>
     		</tr>
     	</tbody>
     </table>
  
  
  <br/>
  <!-- demo2 -->
  	
     <table id="demo2">
     	<thead>
     		<tr>
     			<th>userName</th>
     			<th>email</th>
     			<th>sex</th>
     		</tr>
     	</thead>
     	<tbody>
     		<tr>
     			<td>xiaomaha</td>
     			<td>xiaomaha@163.com</td>
     			<td>男</td>
     		</tr>
     		<tr>
     			<td>xiaomaha2</td>
     			<td>xiaomaha2@163.com</td>
     			<td>男</td>
     		</tr>
     		<tr>
     			<td>xiaomaha3</td>
     			<td>xiaomaha3@163.com</td>
     			<td>男</td>
     		</tr>
     		<tr>
     			<td>xiaomaha4</td>
     			<td>xiaomaha4@163.com</td>
     			<td>男</td>
     		</tr>
     	</tbody>
     </table>
     <span id="a"></span><br/><span id="b"></span><br/><span id="c"></span><br/><span id="d"></span><br/>
  </body>
</html>



显示结果



拖动表头宽度



编辑状态改变背景色


编辑后回车 被编辑过的td会改变颜色




---------------------bestTableOver------------------

可拖动的div

(function($){ 
	
	
	$.fn.bestDrag = function(options)
	{
		
		
		var defaults = {
			
		}
		
		var opts = $.extend(defaults, options);
		
		this.each(function()
		{
			var tag = $(this);
			drog(tag);
		});
		//到处乱拖
		function drog(tag){
			$(tag).mousedown(function(e){
				
				 $(this).css("cursor","move");
				 
				 var offset = $(this).offset();
				 
				 var x = e.clientX-offset.left;
				 var y = e.clientY-offset.top;
				
				 
				 $(document).bind("mousemove",function(event){
					  var _x = event.clientX-x;
					  var _y = event.clientY-y;
					  $(tag).animate({left:_x,top:_y},0);
				 });
				 
			});
			
			$(document).mouseup(function()   
        	{   
	            $(tag).css("cursor","default");   
	            $(this).unbind("mousemove");   
        	});   

			
		}
	};
	
	
})(jQuery);

页面引入jquery和自定义的jquery.bestDrag.js

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>test.html</title>
	
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="this is my page">
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    <script type="text/javascript" src="js/jquery.min.js"></script>
    <script type="text/javascript" src="js/jquery.bestDrag.js"></script>
    <style type="text/css">   
    div{   
	     background:#660099;   
	     width:100px;   
	     height:100px;   
	     text-align:center;   
	     position:absolute;   
	     z-index:1;   
	     left:100px;   
	     top:100px;   
    	}
    </style>  

    <!--<link rel="stylesheet" type="text/css" href="./styles.css">-->
	<script type="text/javascript">
		$(document).ready(function(){
			$('div').bestDrag();
	</script>
  </head>
  
  <body>
  	    <div>可拖动的div</div>
		
	</body>
</html>




显示结果:很平滑、无延迟






点击下载




  • 大小: 6.1 KB
  • 大小: 10.8 KB
  • 大小: 11.1 KB
  • 大小: 11.2 KB
  • 大小: 2.3 KB
  • 大小: 2.5 KB
分享到:
评论

相关推荐

    jQuery+js 实现Table表格可任意拖动调整列宽度大小 适用于列表页等表头拖动宽度设置

    本文将详细介绍如何使用jQuery和JavaScript技术来实现在网页上的Table表格中,通过拖动表头来任意调整列宽度的功能,这个功能适用于各种列表页面,如数据展示、报表分析等场景。 首先,我们需要引入jQuery库,它是...

    实现table表格可按行拖拽,按列排序,并可以保存排序后的结果

    "实现table表格可按行拖拽,按列排序,并可以保存排序后的结果"是一个常见的需求,尤其适用于数据展示和管理的场景。这里我们将详细探讨如何利用jQuery、jQuery.tablesorter和jQuery.tablednd_0_5这三个JavaScript库...

    Jquery 实现列的拖动 jquery grid

    在网页开发中,jQuery Grid是一款强大的数据管理组件,它提供了丰富的功能,如数据分页、排序、搜索等。本文将详细讲解如何利用jQuery实现网格(Grid)中的列拖动功能,以及如何展示和压缩内容,以达到类似Excel的...

    table得列宽拖拽插件

    这个"table列宽拖拽"插件的工作原理是监听用户的鼠标事件,如鼠标按下、移动和释放,当用户在表头(th)上进行拖拽操作时,插件会计算出新的列宽,并相应地更新表格的CSS样式,从而实现列宽的动态调整。此过程涉及到...

    jquery 表格插件表头标题固定在顶部表格内容拖动显示

    在本场景中,我们讨论的是一个特定的 jQuery 插件,用于实现表格的特殊功能——“表头标题固定在顶部,表格内容可拖动显示”。这种功能在处理大数据量或需要滚动查看的表格时非常实用,因为它保持了列标题的可见性,...

    bootstraptable-reorder-columns表格拖拽排序列

    在实际应用中,还可以结合其他BootstrapTable插件,如搜索、筛选、分页等,来创建更强大的数据展示和管理工具。同时,通过自定义CSS和JavaScript,你可以进一步优化拖拽效果,以满足特定的设计需求。 总的来说,...

    Jquery table固定表头,固定列,全浏览器兼容

    在网页设计中,数据展示是不可或缺的一部分,而表格(table)是常见的数据组织方式。当表格数据过多,需要滚动查看时,保持表头(thead)和特定列(column)固定可以极大提高用户的阅读体验。jQuery 提供了一种方便...

    bootstrap-table拖拽表格改变列宽

    Bootstrap Table 是一个基于Bootstrap...这包括Bootstrap的核心CSS文件、jQuery库、Bootstrap Table插件以及用于实现列宽拖动功能的colResizable插件。在HTML文件头部添加以下链接: ```html &lt;!-- Bootstrap CSS --&gt; ...

    colResizable.js 全版本 1.0-1.6 table列可拖动宽度插件 有demo

    这个插件适用于那些需要提供用户自定义界面体验的项目,尤其是在处理大量数据并需要用户根据自身需求调整显示格式时。colResizable.js 提供了从1.0到1.6的多个版本,以满足不同开发环境和需求。 1. **基本功能** -...

    Easyui-DataGrid表头拖动效果

    UI设计在一个系统中的重要性是不容忽视的,我们开发人员要做到:让用户去控制计算机,而不是计算机控制用户;减少用户的记忆负担;保持界面一致。 给你的Easyui-DataGrid 表头添加一点料吧 Easyui-Datagrid—表头...

    固定表头,点击表头排序,拖动表格的列宽

    在网页开发中,数据展示是不可或缺的一部分,而表格(Table)是常见的数据组织形式。"固定表头,点击表头排序,拖动表格的列宽"这三个特性是提高用户交互性和体验的重要功能,广泛应用于各种数据密集型的网页应用中...

    JQuery table改变列的宽度

    5. **插件使用**:虽然可以手动实现列宽调整,但已有许多成熟的jQuery插件可以帮助我们,比如`DataTables`、`Flexigrid`等,它们提供了更高级的功能,如拖动调整列宽。 现在,假设我们有一个表格,想要让用户能够...

    ScrollableTable.js

    然而,面对更复杂的需求,如固定表头和拖动功能,开发者可能需要结合其他工具或自定义实现。在使用`ScrollableTable.js`时,理解其优点和限制,并根据项目需求进行合理选择,是确保网页体验的关键。

    任意改变table表格td的宽度 支持表格TD拖拽

    标题“任意改变table表格td的宽度 支持表格TD拖拽”和描述中反复提到的“动态td的宽度”,就是指这种功能,即允许用户通过拖动来调整表格单元格的宽度。 实现这一功能通常需要结合JavaScript(或者更高级的库如...

    原生javascript实现拖拽改变table表格行高(html)

    最后,这样的功能可以广泛应用于数据展示、编辑表格等场景,让用户可以根据需要自由调整表格的布局,提高其在操作和浏览数据时的灵活性。记住,良好的交互设计往往能够极大地提升网站或应用的用户满意度。

    table自动宽度拉伸

    在网页设计中,表格(Table)是一种常见的数据展示方式,尤其在处理结构化信息时。然而,当表格的内容过多或过宽时,如何使表格适应不同的屏幕尺寸并保持良好的可读性,就成为了一个重要的问题。"table自动宽度拉伸...

    colResizable-1.5 (table 列大小可拖动)

    3. 配置插件选项,如是否启用列宽锁定、是否显示拖动线等。 4. 如果有特殊需求,可以监听插件提供的事件,比如列宽改变后执行特定的操作。 在开发过程中,需要注意以下几点: - 测试兼容性:确保插件在不同的浏览器...

    jQuery表格自定义拖到列表排序代码

    本教程将详细讲解如何利用jQuery实现表格中的自定义拖动排序功能,即“jQuery表格自定义拖到列表排序代码”。 首先,理解基本概念: 1. **jQuery库**:jQuery是由John Resig于2006年创建的,它通过提供简洁易用的...

    实现表格按照列排序和拖拽行排序

    在网页开发中,数据展示通常会使用到表格(Table)这一元素。为了提供更好的用户体验,开发者经常需要实现表格的交互功能,比如按照列排序和拖拽行排序。在这个项目中,我们将利用jQuery库以及两个插件:jquery....

Global site tag (gtag.js) - Google Analytics