Table 的行交换位置

 
<!
DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"
>


< html > < head >
< title > Table test </ title >
< style type ="text/css" >
<!--
td
{ text-align : center ; font-size : 12px ; padding : 3px ; }
-->
</ style >
</ head >
< body >
< table id ="table1" bordercolor ="#000000" width ="200" border ="1" >
< tbody >
< tr >
< td width ="25%" > 1 </ td >
< td width ="25%" > 11 </ td >
<!-- 使用javascript:void(0)是为了能够传递this参数到事件处理程序 -->
< td width ="25%" >< a href ="javascript:void(0)" onclick ="moveUp(this)" > 上移 </ a ></ td >
< td width ="25%" >< a href ="javascript:void(0)" onclick ="moveDown(this)" > 下移 </ a ></ td >
</ tr >
< tr >
< td > 2 </ td >
< td > 22 </ td >
< td >< a href ="javascript:void(0)" onclick ="moveUp(this)" > 上移 </ a ></ td >
< td >< a href ="javascript:void(0)" onclick ="moveDown(this)" > 下移 </ a ></ td >
</ tr >
< tr >
< td > 3 </ td >
< td > 33 </ td >
< td >< a href ="javascript:void(0)" onclick ="moveUp(this)" > 上移 </ a ></ td >
< td >< a href ="javascript:void(0)" onclick ="moveDown(this)" > 下移 </ a ></ td >
</ tr >
< tr >
< td > 4 </ td >
< td > 44 </ td >
< td >< a href ="javascript:void(0)" onclick ="moveUp(this)" > 上移 </ a ></ td >
< td >< a href ="javascript:void(0)" onclick ="moveDown(this)" > 下移 </ a ></ td >
</ tr >
< tr >
< td > 5 </ td >
< td > 55 </ td >
< td >< a href ="javascript:void(0)" onclick ="moveUp(this)" > 上移 </ a ></ td >
< td >< a href ="javascript:void(0)" onclick ="moveDown(this)" > 下移 </ a ></ td >
</ tr >
</ tbody >
</ table >
</ body >
</ html >

< script language ="JavaScript" type ="text/javascript" >
<!--
function cleanWhitespace(element) {
// 遍历element的子结点
for ( var i = 0 ; i < element.childNodes.length; i ++ ) {
var node = element.childNodes[i];
// 判断是否是空白文本结点,如果是,则删除该结点
if (node.nodeType == 3 && ! / /S / .test(node.nodeValue))
node.parentNode.removeChild(node);
}
}
// 获得表格对象
var _table = document.getElementById( " table1 " );
cleanWhitespace(_table);
// 使表格行上移,接收参数为链接对象
function moveUp(_a){
// 通过链接对象获取表格行的引用
var _row = _a.parentNode.parentNode;
// 如果不是第一行,则与上一行交换顺序
if (_row.previousSibling)swapNode(_row,_row.previousSibling);
}
// 使表格行下移,接收参数为链接对象
function moveDown(_a){
// 通过链接对象获取表格行的引用
var _row = _a.parentNode.parentNode;
// 如果不是最后一行,则与下一行交换顺序
if (_row.nextSibling)swapNode(_row,_row.nextSibling);
}
// 定义通用的函数交换两个结点的位置
function swapNode(node1,node2){
// 获取父结点
var _parent = node1.parentNode;
// 获取两个结点的相对位置
var _t1 = node1.nextSibling;
var _t2 = node2.nextSibling;
// 将node2插入到原来node1的位置
if (_t1)_parent.insertBefore(node2,_t1);
else _parent.appendChild(node2);
// 将node1插入到原来node2的位置
if (_t2)_parent.insertBefore(node1,_t2);
else _parent.appendChild(node1);
}
// -->
</ script >
VueDraggable是一个基于Vue.js的Drag-and-Drop组件,可以实现拖拽和排序操作。ElementUI是一个基于Vue.js的UI组件库,提供了许多常用的UI组件,包括表格组件。 在使用ElementUI的表格组件时,我们可以使用VueDraggable来实现表头可以拖动交换位置的效果。具体实现过程如下: 1. 安装VueDraggable组件库 在项目中安装VueDraggable组件库,可以使用npm install vuedraggable --save 命令进安装。 2. 在表格组件中使用VueDraggable 在表格组件中引入VueDraggable组件,并将表头数据作为props传入。在table-header的slot中,使用VueDraggable组件将表头数据进渲染并设置为可拖动的。 ``` <template> <div> <el-table :data="tableData"> <el-table-column v-for="column in tableHeader" :key="column.prop" :prop="column.prop" :label="column.label" :sortable="true" :resizable="true" ></el-table-column> <template slot="header"> <draggable v-model="tableHeader" @end="onDragEnd" :options="{group:'tableHeader',handle:'.drag-handle'}" > <el-table-column v-for="(column, index) in tableHeader" :key="column.prop" :prop="column.prop" :label="column.label" :width="column.width" :resizable="true" :sortable="true" :class="['drag-handle',{'dragged':dragIndex === index}]"> <span slot-scope="{column}">{{column.label}}</span> </el-table-column> </draggable> </template> </el-table> </div> </template> <script> import draggable from 'vuedraggable' export default { data () { return { tableHeader: [ { prop: 'id', label: 'ID', width: 120 }, { prop: 'name', label: 'Name', width: 120 }, { prop: 'age', label: 'Age', width: 120 } ], tableData: [] } }, components: { draggable }, methods: { onDragEnd(evt) { this.dragIndex = -1; //重置被拖拽的元素的下标 } } } </script> ``` 以上就是实现表格表头可拖动交换位置的方法,通过将头部数据作为props传入VueDraggable组件,然后在表格头部的slot中使用VueDraggable组件进渲染即可。同时,我们还可以设置拖动的group,以及拖动的handle等相关属性。在本例中,我们还设置了拖动结束后触发的事件,重置被拖拽元素的下标。 总的来说,VueDraggable与ElementUI的结合可以方便快捷地实现表头可拖动交换的功能,减轻开发者的工作量,提高系统的用户体验。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值