表格拖拽 拖拽排序 sortablejs插件

前言

我们开发后台的时候经常要做表格,有时候要对表格对一些其他的操作,今天我们是用sortablejs插件来实现我们的表格拖拽排序

1、首先要下载我们需要用到的插件
 npm install sortablejs
2、在使用的页面引入我们的插件
import Sortable from "sortablejs"; 
3、在表格上绑定ref
ref="singleTable"
4、定义我们的表格数组
data() {
    return {
        panList:[],
    };
  },
5、写操作逻辑
mounted() {
    this.dragSort();
  },
  methods: {
   sortableTable() {  
        const el = this.$refs.singleTable.$el.querySelectorAll(
        ".el-table__body-wrapper > table > tbody"
      )[0];
      Sortable.create(el, {  
        animation: 150,  
        onEnd: ({ newIndex, oldIndex }) => {  
          const movedItem = this.tableData.splice(oldIndex, 1)[0];  
          this.tableData.splice(newIndex, 0, movedItem);  
        },  
      });  
    },   
  },
6、这样就大功告成了
  • 7
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现表格排序可以使用HTML5中的drag和drop事件,以及JavaScript的相关操作。以下是一个示例代码: HTML部分: ```html <table id="sortable-table"> <thead> <tr> <th>序号</th> <th>姓名</th> <th>年龄</th> <th>国籍</th> </tr> </thead> <tbody> <tr draggable="true"> <td>1</td> <td>张三</td> <td>25</td> <td>中国</td> </tr> <tr draggable="true"> <td>2</td> <td>李四</td> <td>30</td> <td>美国</td> </tr> <tr draggable="true"> <td>3</td> <td>王五</td> <td>28</td> <td>英国</td> </tr> </tbody> </table> ``` JavaScript部分: ```javascript // 获取表格表格行 var table = document.getElementById('sortable-table'); var rows = table.querySelectorAll('tr'); // 设置表格行的放事件监听 rows.forEach(function(row) { row.addEventListener('dragstart', dragstart); row.addEventListener('dragenter', dragenter); row.addEventListener('dragover', dragover); row.addEventListener('dragleave', dragleave); row.addEventListener('drop', drop); row.addEventListener('dragend', dragend); }); var dragSrcEl = null; function dragstart(e) { dragSrcEl = this; e.dataTransfer.effectAllowed = 'move'; e.dataTransfer.setData('text/html', this.innerHTML); } function dragenter(e) { this.classList.add('over'); } function dragover(e) { if (e.preventDefault) { e.preventDefault(); } e.dataTransfer.dropEffect = 'move'; return false; } function dragleave(e) { this.classList.remove('over'); } function drop(e) { if (e.stopPropagation) { e.stopPropagation(); } if (dragSrcEl != this) { dragSrcEl.innerHTML = this.innerHTML; this.innerHTML = e.dataTransfer.getData('text/html'); } return false; } function dragend(e) { rows.forEach(function(row) { row.classList.remove('over'); }); } ``` 在上述代码中,通过获取表格表格行,然后为每一行设置放事件监听。当动某一行时,会触发对应的事件处理函数,进行相应的操作。 具体实现过程如下: 1. 在动开始时,记录下当前动的表格行(即dragSrcEl),同时设置放效果为move,将当前行的innerHTML设置为动的数据(text/html); 2. 当动进入其他表格行时,添加over类,用于样式的变化; 3. 在动过程中,防止浏览器默认行为,同时设置放效果为move; 4. 当动离开某个表格行时,移除over类; 5. 当放完成时,如果动的行不是当前行,则交换两行的innerHTML; 6. 最后,移除所有表格行的over类。 通过以上实现,即可实现简单的表格排序功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值