请教大佬们个问题,vue2中我有一个基础的el-table表格,表格里分置顶区域和非置顶区域,需求是置顶区域之间可以互相拖拽排序,非置顶区域可以互相拖拽排序,非置顶和置顶之间不可拖拽排序,
比如1.2.3条数据是置顶的,可以互相拖拽排序,4.5.6是非置顶数据,可以拖拽排序,但1.2.3和4.5.6之间不可互相拖拽,感谢各位大佬解惑
要实现您所描述的表格分组拖拽排序功能,您可以使用一些前端库,如 Sortable.js
或者 Vue.Draggable
(如果您在使用Vue.js)等,这些库提供了强大的拖拽排序功能。以下是一个基于 Sortable.js
的实现思路,因为它是一个轻量级的JavaScript库,适用于大多数场景。
首先,您需要在您的项目中引入Sortable.js。您可以通过CDN或npm来安装。
<!-- 通过CDN引入Sortable.js -->
<script src="https://cdn.jsdelivr.net/npm/sortablejs@latest/dist/sortable.min.js"></script>
假设您的表格HTML结构如下:
<table id="myTable">
<thead>
<tr>
<th>ID</th>
<th>Name</th>
<th>Is Sticky</th>
</tr>
</thead>
<tbody>
<tr data-group="sticky">
<td>1</td>
<td>Item 1</td>
<td>Yes</td>
</tr>
<tr data-group="sticky">
<td>2</td>
<td>Item 2</td>
<td>Yes</td>
</tr>
<tr data-group="non-sticky">
<td>3</td>
<td>Item 3</td>
<td>No</td>
</tr>
<!-- 更多行... -->
</tbody>
</table>
注意,这里使用 data-group
属性来区分置顶和非置顶的行。
接下来,使用Sortable.js初始化拖拽排序,但需要分别处理置顶和非置顶的行。
// 初始化置顶区域的拖拽排序
var stickyList = document.querySelectorAll('tr[data-group="sticky"]');
Sortable.create(stickyList, {
group: "sticky",
animation: 150,
onEnd: function (/**Event*/evt) {
// 拖拽结束后的回调,可以用来更新数据等
console.log('Sticky item moved!');
}
});
// 初始化非置顶区域的拖拽排序
var nonStickyList = document.querySelectorAll('tr[data-group="non-sticky"]');
Sortable.create(nonStickyList, {
group: "non-sticky",
animation: 150,
onEnd: function (/**Event*/evt) {
// 拖拽结束后的回调
console.log('Non-sticky item moved!');
}
});
// 注意:由于Sortable.js默认不支持跨列表拖拽,上面的分组设置确保了置顶和非置顶区域之间不能互相拖拽
然而,这里有个小问题:Sortable.js通常用于列表(如<ul>
或<ol>
),而不是表格行(<tr>
)。对于表格,您可能需要考虑使用其他库(如Vue.Draggable
在Vue中,或实现自定义的拖拽逻辑),或者将表格行转换为可拖拽的列表项,并在拖动后更新表格的DOM。
如果您想要继续使用表格形式并希望保持结构不变,可能需要寻找或编写一个更适用于表格的拖拽库,或者采用一些DOM操作技巧来模拟拖拽效果。
如果Sortable.js不完全符合您的需求,您还可以考虑使用像jQuery UI
的Sortable插件(虽然它也不再是官方维护的重点),或者完全自定义拖拽逻辑,使用HTML5的拖放API (drag
和 drop
事件) 来实现。
Sortable 怎么实现 拖拽列 不拖拽行 比如我把 value11 拖拽到 value22 的位置 最后结果如图 拖拽元素和目标元素交换位置 最后结果
本文向大家介绍jqueryUI里拖拽排序示例分析,包括了jqueryUI里拖拽排序示例分析的使用技巧和注意事项,需要的朋友参考一下 示例参考http://jsfiddle.net/KyleMit/Geupm/2/ (这个站需要FQ才能看到效果) 其实是jqueryUI官方购物车拖拽添加例子的增强版,就是在拖拽的时候增加了排序 这个是html代码 这个是js代码主要在js代码中红色代码部分设置
本文向大家介绍举例说明js如何拖拽排序?相关面试题,主要包含被问及举例说明js如何拖拽排序?时的应答技巧和注意事项,需要的朋友参考一下 可能和 @HCLQ 说的思路差不多
功能是切换上面checkbox,生成底下的标签,底下的标签可以拖拽排序。现在的问题是对底下的标签进行拖拽排序之后,上面的checkbox再切换,会对顺序进行重新排列。怎么实现切换上边的checkbox,不对底下的标签产生影响?
本文向大家介绍针对后台列表table拖拽比较实用的jquery拖动排序,包括了针对后台列表table拖拽比较实用的jquery拖动排序的使用技巧和注意事项,需要的朋友参考一下 现在很多后台列表为了方便均使用拖拽排序的功能,对列表进行随意的排序。 话不多说 ,我在网上找了一些demo,经过对比,现在把方便实用的一个demo列出来,基于jqueryUI.js 先上html代码,很简单: 复制代码 复制
本文向大家介绍vue拖拽组件 vuedraggable API options实现盒子之间相互拖拽排序,包括了vue拖拽组件 vuedraggable API options实现盒子之间相互拖拽排序的使用技巧和注意事项,需要的朋友参考一下 vue拖拽克隆clone组件API, vue.draggable实现盒子之间相互拖拽排序克隆(网上资源整理的文档) 效果图: -----------------