html拖拽调整顺序,一个轻量级的jQuery拖拽排序插件:HTML5 Sortable

如果大家提到拖放相关插件的话,肯定会想到jQuery UI,这个UI类库包含了你需要用到的几乎所有组件,但是如果你只想使用jQuery UI中的某一个组件,例如,拖放组件的话,调用如此大的一个类库会有有杀鸡用宰牛刀的感觉,今天这里我们将介绍一个轻量级的jQuery drag and drop插件 - HTML5 Sortable。它能够帮助你创建可拖拽的列表和网格元素,希望大家喜欢!

主要特性

1.非常小(压缩版1kb)

2.使用HTML5的本地拖放API

3.支持列表和网格样式布局

4.非常类似jQuery UI的排序插件

5.支持IE5.5+,Firefox3.5+,Chrome3+,Safari3+和Opera12+

6.API兼容jQuery UI,你可以使用jQuery UI作为polyfill来支持老版本浏览器

如何使用

使用非常简单:

  • Item 1
  • Item 2
  • Item 3
  • Item 4

$('.gbsortable').sortable();

主要参数和方法

参数:

items:指定需要排序的元素

connectWith:创建相关的列表

方法:

sortupdate:顺序改变后调用方法,比如,顺序改变后保存新的排序

disable:临时关闭排序功能

enable:打开排序功能

destroy:销毁排序功能

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以为您提供一个完整的示例代码,实现调整顺序、列宽度的功能,并将调整后的顺序和宽度存入缓存中。请参考下面的代码: HTML代码: ```html <table id="table"> <thead> <tr> <th>列1</th> <th>列2</th> <th>列3</th> <th>列4</th> </tr> </thead> <tbody> <tr> <td>1-1</td> <td>1-2</td> <td>1-3</td> <td>1-4</td> </tr> <tr> <td>2-1</td> <td>2-2</td> <td>2-3</td> <td>2-4</td> </tr> <tr> <td>3-1</td> <td>3-2</td> <td>3-3</td> <td>3-4</td> </tr> </tbody> </table> ``` JavaScript代码: ```javascript $(function() { // 初始化表格列的顺序和宽度 var columns = { '列1': { order: 1, width: 100 }, '列2': { order: 2, width: 100 }, '列3': { order: 3, width: 100 }, '列4': { order: 4, width: 100 } }; // 初始化表格 $('#table').DataTable({ // 隐藏默认的排序按钮 ordering: false, // 设置默认列宽 columnDefs: [ { targets: '_all', width: columns['列1'].width } ] }); // 初始化可排序 $('#table thead tr').sortable({ axis: 'x', cursor: 'move', items: 'th:not(:first-child)', start: function(e, ui) { // 保存开始时的位置 ui.item.startPos = ui.item.index(); }, stop: function(e, ui) { // 保存调整后的位置 var oldPos = ui.item.startPos; var newPos = ui.item.index(); // 更改列的顺序 if (oldPos != newPos) { var columnName = ui.item.text(); var columnOrder = columns[columnName].order; for (var i = 0; i < $('#table th').length; i++) { if (i == oldPos) { columns[columnName].order = newPos + 1; } else if (i > oldPos && i <= newPos) { var prevColumnName = $('#table th').eq(i - 1).text(); columns[prevColumnName].order = columns[prevColumnName].order + 1; } else if (i < oldPos && i >= newPos) { var nextColumnName = $('#table th').eq(i + 1).text(); columns[nextColumnName].order = columns[nextColumnName].order - 1; } } } } }); // 初始化可调整宽度 $('#table th:not(:first-child)').resizable({ handles: 'e', minWidth: 50, stop: function(e, ui) { // 保存调整后的宽度 var columnName = ui.element.text(); var columnWidth = ui.size.width; columns[columnName].width = columnWidth; } }); // 将列的顺序和宽度保存到缓存中 function saveColumnsToCache() { localStorage.setItem('columns', JSON.stringify(columns)); } // 页面卸载时保存列的顺序和宽度 $(window).unload(function() { saveColumnsToCache(); }); // 从缓存中读取列的顺序和宽度 function loadColumnsFromCache() { var cachedColumns = localStorage.getItem('columns'); if (cachedColumns) { columns = JSON.parse(cachedColumns); } } // 页面加载时读取列的顺序和宽度 loadColumnsFromCache(); // 调整列的顺序和宽度 for (var columnName in columns) { var columnOrder = columns[columnName].order; var columnWidth = columns[columnName].width; var columnIndex = columnOrder - 1; $('#table th').eq(columnIndex).text(columnName); $('#table th').eq(columnIndex).css('width', columnWidth + 'px'); $('#table td').each(function() { var $td = $(this); var $newTd = $('<td>').css('width', columnWidth + 'px'); var tdText = $td.parent().find('td').eq(columnIndex).text(); $newTd.text(tdText); $td.replaceWith($newTd); }); } // 保存列的顺序和宽度到缓存中 saveColumnsToCache(); }); ``` 上面的代码使用了jQuery UI Sortable件和jQuery UI Resizable件,可以实现调整顺序、列宽度的功能,并将调整后的顺序和宽度存入缓存中。请注意,此代码示例使用的是DataTables件来初始化表格,如果您使用的是其他表格件,可能需要进行相应的修改。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值