`
wangxiao5530
  • 浏览: 136853 次
  • 性别: Icon_minigender_2
  • 来自: 大连
社区版块
存档分类
最新评论

jQuery实现行上下移动并删除(顺序不变)

 
阅读更多

 

页面效果如下:

 


 

HTML代码如下:

 

<html>
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
	<title>jQuery实现行上下移动并删除(顺序不变)</title>
	<style>
		.rowNum {width:10px;text-align:center;border:none}
		.btn    {width:10px;text-align:center}
		td      {padding-left:5px;padding-right:5px;padding-top:3px;padding-bottom:3px}	
	</style>
</head>
<body>
	<table id="tbHide" style="display:none">
		<tr id="trHide"></tr>
	</table>
	<table border="1" id="tbShow">
		<thead>
			<tr>
				<th>No</th>
				<th>Name</th>
				<th colspan="3">操作</th>
				<th>Id</th>
			</tr>
		</thead>
		<tbody>
			<tr>
				<td>1</td>
				<td>First</td>
				<td><input type="button" name="btnUp"   value="↑" onclick="move(this)"></td>
				<td><input type="button" name="btnDown" value="↓" onclick="move(this)"></td>
				<td><input type="button" name="btnDel"  value="×" onclick="move(this)"></td>
				<td><input type="text"   name="rowNum"  value="1" readonly class="rowNum"></td>
			</tr>
			<tr>
				<td>2</td>
				<td>Second</td>
				<td><input type="button" name="btnUp"   value="↑" onclick="move(this)"></td>
				<td><input type="button" name="btnDown" value="↓" onclick="move(this)"></td>
				<td><input type="button" name="btnDel"  value="×" onclick="move(this)"></td>
				<td><input type="text"  name="rowNum"   value="2" readonly class="rowNum"></td>
			</tr>
			<tr>
				<td>3</td>
				<td>Third</td>
				<td><input type="button" name="btnUp"   value="↑" onclick="move(this)"></td>
				<td><input type="button" name="btnDown" value="↓" onclick="move(this)"></td>
				<td><input type="button" name="btnDel"  value="×" onclick="move(this)"></td>
				<td><input type="text"   name="rowNum"  value="3" readonly class="rowNum"></td>
			</tr>
			<tr>
				<td>4</td>
				<td>Forth</td>
				<td><input type="button" name="btnUp"   value="↑" onclick="move(this)"></td>
				<td><input type="button" name="btnDown" value="↓" onclick="move(this)"></td>
				<td><input type="button" name="btnDel"  value="×" onclick="move(this)"></td>
				<td><input type="text"   name="rowNum"  value="4" readonly class="rowNum"></td>
			</tr>
			<tr>
				<td>5</td>
				<td>Fifth</td>
				<td><input type="button" name="btnUp"   value="↑" onclick="move(this)"></td>
				<td><input type="button" name="btnDown" value="↓" onclick="move(this)"></td>
				<td><input type="button" name="btnDel"  value="×" onclick="move(this)"></td>
				<td><input type="text"   name="rowNum"  value="5" readonly class="rowNum"></td>
			</tr>
		</tbody>
	</table>
</body>
</html>

 

JavaScript如下:

 

<script>
	var tempSelector = "td:last-child input[name=rowNum]";
	
	// Button点击
	function move(obj){
		var btnType = $(obj).attr("name");
		var currRow = $(obj).parent().parent();
		
		if(btnType == "btnUp"){
			moveUpCommand(currRow);
		}else if(btnType == "btnDown"){
			moveDownCommand(currRow);
		}else if(btnType == "btnDel"){
			delRowOperate(currRow);
		}
	}
	
   // move up	
   function moveUpCommand(currRow){
	   var firstTr = $("#tbShow tbody tr:first-child");
	   var firstTrNo = Number($(firstTr).find(tempSelector).val());
	   var currRowNo = Number($(currRow).find(tempSelector).val());
	   if(currRowNo == firstTrNo){
		   return;
	   }else{
		   moveUpOperate(currRow);
	   }
   }
   
   // move down
   function moveDownCommand(currRow){
	   var lastTr = $("#tbShow tbody tr:last-child");
	   var lastTrNo  = Number($(lastTr).find(tempSelector).val());
	   var currRowNo = Number($(currRow).find(tempSelector).val());
	   if(currRowNo == lastTrNo){
		   return;
	   }else{
		   moveDownOperate(currRow);
	   }
   }
   
   // delete row
   function delRowOperate(currRow){
	   $(currRow).nextAll().each(function(){
		   $(this).find(tempSelector).val(Number($(this).find(tempSelector).val())-1);
	   });
	   $(currRow).remove();
   }
   
   // move up operate
   function moveUpOperate(currRow){
	   var tempRow = $("#trHide").html($(currRow).html());
	   var prevRow = $(currRow).prev();
	   
	   var prevRowNo = $(prevRow).find(tempSelector).val();
	   var tempRowNo = $(tempRow).find(tempSelector).val();
	   
	   // current row
	   $(prevRow).find(tempSelector).val(Number(prevRowNo)+1);
	   $(currRow).html("").append($(prevRow).html());
	   
	   // previous row
	   $(tempRow).find(tempSelector).val(Number(tempRowNo)-1);
	   $(prevRow).html("").append($(tempRow).html());
	   
	   $("#trHide").html("");
   }
   
   // move down operate
   function moveDownOperate(currRow){
	   var tempRow = $("#trHide").html($(currRow).html());
	   var nextRow = $(currRow).next();
	   var nextRowNo = $(nextRow).find(tempSelector).val();
	   var tempRowNo = $(tempRow).find(tempSelector).val();
	   
	   // current row
	   $(nextRow).find(tempSelector).val(Number(nextRowNo)-1);
	   $(currRow).html("").append($(nextRow).html());
	   
	   // next row
	   $(tempRow).find(tempSelector).val(Number(tempRowNo)+1);
	   $(nextRow).html("").append($(tempRow).html());
	   
	   $("#trHide").html("");
   }
	   
</script>

 

 

  • 大小: 35.8 KB
分享到:
评论

相关推荐

    jQuery实现table中的tr上下移动并保持序号不变

    本示例主要关注如何利用jQuery实现在HTML表格(table)中移动行(tr)的同时保持行内的序号不变,这对于数据排序或用户交互有着重要的应用。我们将探讨以下关键知识点: 1. jQuery选择器与DOM操作: jQuery提供了...

    jQuery实现下拉框左右移动(全部移动,已选移动)

    本文主要讲解了如何使用jQuery库中的appendTo()方法来实现两个下拉框之间选项的左右移动。这个操作能够让用户从一个下拉框中选择选项并移动到另一个下拉框,或者反过来,从另一个下拉框中选取所有选项移动到第一个...

    js 穿梭框,可以从左边到右边,也可以从右到左,支持多选

    这种组件常用于数据筛选、用户权限设置等场景,允许用户从一组选项中选择多个项目并移动到另一个列表。在这个案例中,穿梭框支持双向移动(从左到右,从右到左)以及多选功能,极大地提高了用户操作的灵活性。 首先...

    2010年最佳jQuery插件整理

    WDL的这篇博文,整理并介绍了2010年最受欢迎和实用的jQuery插件,不仅为当时的设计师和开发人员提供了灵感,也为当前的IT行业留下了宝贵的技术遗产。 ### NivoSlider NivoSlider是一个功能强大的滑动器插件,它提供...

    jquery右下角浮动窗口

    首先,我们要明白jQuery右下角浮动窗口的核心在于创建一个定位在屏幕右下角的元素,并使其能够随滚动条移动而保持位置不变。这涉及到CSS的定位属性,如`position: fixed`,以及jQuery的事件监听和动态调整位置的方法...

    table表格拖动列

    在"table表格拖动列"这个功能中,JavaScript主要负责监听用户的鼠标事件,如鼠标按下、移动和释放,来实现列的拖动行为。当用户点击并拖动表格的列头时,JavaScript会捕获这一动作,并记录下当前列的位置信息。 ...

    网页模块拖动 灵活布局

    Flexbox适用于一维布局,如行或列,适合处理模块化的容器和子元素的对齐、顺序调整。Grid则为二维布局提供了强大的工具,能够精确控制元素在网格中的位置和大小,适用于创建复杂的网页结构。 3. **JavaScript/ ...

    breadcrumb(面包屑导航)

    面包屑导航,通常被称为“breadcrumb navigation”,是一种用户界面设计元素,用于帮助用户在网站或应用程序中跟踪他们的位置,并轻松地返回之前的页面。这种导航模式得名于童话故事《汉塞尔与格莱特》中,孩子们用...

    div+css样式与布局实例

    在网页设计领域,`div+css`是一种广泛采用的技术,用于实现高效、灵活的页面布局和样式控制。这种技术的核心是使用HTML中的`&lt;div&gt;`元素作为内容的容器,并通过CSS(Cascading Style Sheets)来定义这些容器的外观和...

    固定浮动定位(fixed)实现思路及代码

    一种直观的方法是使用JavaScript或jQuery来动态计算屏幕宽度并调整`left`值。然而,这里提供了一个纯CSS的解决方案,无需借助JavaScript。 关键CSS代码如下: ```css .test { border: 1px solid red; position: ...

    info:为我提供信息的存储库

    在这个系统中,"nav_order" 可能是用来定义导航菜单顺序的变量或配置,确保用户能按照设计的逻辑浏览内容。"描述" 提到了“永久链接”,这通常是指具有固定不变的URL,以便用户或系统能够长期访问某个资源,提高可...

Global site tag (gtag.js) - Google Analytics