sortable.js中文文档

sortable.js对table表格进行拖动排序

比如我们有一个文章列表,我们可以设置文章排序字段数字大小然后ajax刷选数据进行排序,这种方法比较简单但是用户体验不好,本章节将通过sortable.js对表格进行排序实现更好的用户体验。

引入sortable.js

<script src="https://www.itxst.com/package/sortable/sortable.min.js"></script>

代码实现

注意每个tr标签需要tbody包裹起来才能有效果。

<table id="itxst">
    <tbody data-id="1">
        <tr>
            <td>1</td>
            <td>www.baidu.com</td>
        </tr>
    </tbody>
    <tbody data-id="2">
        <tr>
            <td>2</td>
            <td>www.itxst.com</td>
        </tr>
    </tbody>
    <tbody data-id="3">
        <tr>
            <td>3</td>
            <td>www.google.com</td>
        </tr>
    </tbody>
    <tbody data-id="4">
        <tr>
            <td>4</td>
            <td>www.microsoft.com</td>
        </tr>
    </tbody>
</table>
<script>
    //获取对象
    var el = document.getElementById('itxst');
    //设置配置
    var ops = {
        animation: 1000,
        //拖动结束
        onEnd: function (evt) {
            console.log(evt);
            //获取拖动后的排序
            var arr = sortable.toArray();
            alert(JSON.stringify(arr));
        }
    };
    //初始化
    var sortable = Sortable.create(el, ops);
</script>

在线试一试

完整代码

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title>sortable.js table表格拖拽例子</title>
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no, minimal-ui">
    <script src="https://www.itxst.com/package/sortable/sortable.min.js"></script>
    <style>
        table {
            border-collapse: collapse;
            margin: 0 auto;
            text-align: center;
            width: 90%;
        }


            table td, table th {
                border: 1px solid #cad9ea;
                color: #666;
                height: 30px;
            }


            table thead th {
                background-color: #CCE8EB;
            }


            table tr:nth-child(odd) {
                background: #fff;
            }


            table tr:nth-child(even) {
                background: #F5FAFA;
            }
    </style>
</head>
<body>
<table id="itxst">
    <tbody data-id="1">
        <tr>
            <td>1</td>
            <td>www.baidu.com</td>
        </tr>
    </tbody>
    <tbody data-id="2">
        <tr>
            <td>2</td>
            <td>www.itxst.com</td>
        </tr>
    </tbody>
    <tbody data-id="3">
        <tr>
            <td>3</td>
            <td>www.google.com</td>
        </tr>
    </tbody>
    <tbody data-id="4">
        <tr>
            <td>4</td>
            <td>www.microsoft.com</td>
        </tr>
    </tbody>
</table>
<script>
    //获取对象
    var el = document.getElementById('itxst');
    //设置配置
    var ops = {
        animation: 1000,
        //拖动结束
        onEnd: function (evt) {
            console.log(evt);
            //获取拖动后的排序
            var arr = sortable.toArray();
            alert(JSON.stringify(arr));
        }
    };
    //初始化
    var sortable = Sortable.create(el, ops);
</script>
</body>
</html>
Catalog
快速入门 常用例子 对table表格拖动排序 多组间相互拖动排序 属性列表 group 多组之间拖动 sort 是否允许组内排序 delay 延迟多久允许拖动 delayOnTouchOnly 属性 animation 动画 handle 指定拖拽句柄 filter 过滤或忽略指定元素 dataIdAttr 获取排序后数据 ghostClass 自定义停靠位置样式 draggable 指定样式 dragClass 拖拽对象移动样式 chosenClass 选中对象样式 事件列表 onChoose 选中事件 onStart 开始拖动事件 onUnchoose 取消选中事件 onEnd 拖动结束事件 onAdd 多组新增元素事件 onUpdate 位置更改事件 onSort 拖拽位置改变事件 onRemove 从组移除事件 onMove 拖拽中的事件 onClone 克隆事件 onChange 拖拽中位置改变事件