jquery实现表格拖拽排序

jQuery表格列自由拖动排序.zip <html lang="en"> <head> <meta charset="UTF-8"> <title>表格列自由拖动排序js代码</title> <link href="css/columnDrag.css?3.1.64" rel="stylesheet" type="text/css"> </head> <body>[removed][removed] jQuery表格列自由拖动排序 序列 名称 数量 单价(Q点) 总计(Q点) 1 农场话费A 2 50 100 一款非常不错的表格列自由拖动排序js代码,单击鼠标长按表格列自由拖动排序,互换列排序代码,点击表格头部支持表格数据升降大小排序效果。 立即下载

1、引入:jQuery文件和jquery-ui.js

<script src="@{'/public/javascripts/jquery-1.11.1.min.js'}" charset="UTF-8"></script>
<script src="@{'/public/javascripts/jquery-ui.min.js'}" charset="UTF-8"></script>

其中jquery-ui.min.js可以去官网下载:http://jqueryui.com/download/all/

假设我们有这么一个table:

<table class="table table-striped table-bordered table-hover" id="sortable">
    <thead>
        <tr>
            <th style="text-align: center;">序号</th>
            <th style="text-align: center;">名称</th>
            <th style="text-align: center;">类型代码</th>
            <th style="text-align: center;">含义</th>
            <th style="text-align: center;">是否显示</th>
            <th style="text-align: center;">操作</th>
        </tr>
    </thead>
<tbody>
    #{list items:eventTypeList, as:'n'}
        #{if n.status ==1}
        <tr class="item" aid="${n.id}" id="${n.id}" sort="${n.sort}">
            <td>${n.sort}</td>
            <td>${n.radar_name}</td>
            <td>${n.radar_code}</td>
            <td>${n.remark}</td>
            <td>显示</td>
            <td><button class="btn btn-primary edit" tid="${n.id}">修改</button></td>
        </tr>
    #{/if}
#{/list}
</tbody>
</table>

给table中id随便去个名字,我去的名字是:sortable 
如果我进行任何操作,仅仅只是拖拽的话,以下两行代码就可以啦;

$( "#sortable").sortable();
$( "#sortable").disableSelection();

但是我们往往是希望能把我们排好的顺序通过发送请求保存到后台数据库里面去! 
所以我们需要以下的配置;

var fixHelper = function(e, ui) {  
    //console.log(ui)   
    ui.children().each(function() {  
    $(this).width($(this).width());  //在拖动时,拖动行的cell(单元格)宽度会发生改变。在这里做了处理就没问题了   
  });  
    return ui;  
}; 

$(function() {
  $( "#sortable tbody").sortable({
    cursor: "move",
    helper: fixHelper,                  //调用fixHelper
    axis:"y",
    start:function(e, ui){
    ui.helper.css({"background":"#fff"})     //拖动时的行,要用ui.helper
    return ui;
},
sort:function(e, ui){
array = [];                     
select_item = ui.item; //当前拖动的元素
var select_id = select_item.attr("id"); 
select_sort = select_item.attr("sort"); //当前元素的顺序
//alert(select_item);
place_item = $(this).find('tr').filter('.ui-sortable-placeholder').next('tr');//新位置下的下一个元素
place_sort = place_item.attr('sort');

place_sx = parseInt(place_sort);
select_sx = parseInt(select_sort);

if(select_sx > place_sx){ //说明是 向上移动
//array.push(select_id);
temp = place_sort;
place_sx = select_sort;//最大
select_sx = temp;//最小
flag = false;
}else{ //向下移动
    place_sort = $(this).find('tr').filter('.ui-sortable-placeholder').prev('tr').attr('sort');
    place_sx = parseInt(place_sort);
    flag = true;
}
},
    stop:function(e, ui){
    //ui.item.removeClass("ui-state-highlight"); //释放鼠标时,要用ui.item才是释放的行   
    //发送请求,对sort字段进行修改
    //alert(ui.item.attr("id"));//可以拿到id
    //alert(ui.position.top);//可以拿到id
    var temp = "";
    #{list items:eventTypeList, as:'n'}
    var sort = parseInt(${n.sort});
    if(sort >= select_sx && sort <= place_sx){

    if(sort == parseInt(select_sort)){//当前拖拽的元素 向上拖拽,当前元素放在数组第一个,向下,放在数组最后一个
        if(flag){//向下 - 按顺序来
            temp = ${n.id};
        }else{//向上排序
            array.splice(0,0,${n.id});
        }
    }else{
         array.push(${n.id});
    }
    }
#{/list}
if(flag){
    array.splice(place_sx-select_sx,0,temp); 
}

if(window.confirm("确定这么排吗?")){
    $.ajax({
    url:'/EventAction/sortTable',
    type:'POST',
    async: false,
    data:{'ids':array, selectSx:select_sx, placeSx:place_sx},
            datatype:'json',
            success:function(data){
            alert(data.data);
            window.location.reload();
        },
            error:function(){
                alert('保存排序异常');
            }
        });
    }else{
        $(this).sortable( 'cancel' );
      }

        return ui;  
      },
     });
    $( "#sortable" ).disableSelection();
});

以上是我的代码; 
其中名为fixHelper的函数方法是为了在拖拽行时,单元格的宽度保持不变! 
主要的部分就是:

$( "#sortable tbody").sortable({
    ...
});

这里面一些固定的配置:

cursor: "move",
helper: fixHelper,                  //调用fixHelper
axis:"y", //拖拽方向是上下拖拽,x就是横向拖拽

以上配置没什么好说的,都是常用的固定配置。 
之后,我的方法里面写了start:function(e,ui){},sort:function(e,ui){},stop:function(e,ui){}事件。 
start事件是:当排序动作开始时触发此事件。 
我的设置是ui.helper.css({"background":"#fff"}) //拖动时的行,要用ui.helper 
return ui; 

sort事件是:当元素发生排序时触发此事件 
在这里我进行业务逻辑的处理; 
当前拖拽的元素我可以通过ui.item来获取。 
如果我们向上拖拽,那么我就要获取拖拽后新位置的下一个元素。 
如果我们向下拖拽,那么我就要获取拖拽后新位置的上一个元素。

为什么要这样获取呢?因为要获取到底哪些行受到了影响。 
举例 table表格总共有1,2,3,4,5,6,7,8,9,10行。 
假设我拖住的是第6行,把6移到了3的位置,也就是受到影响的行时3,4,5,6. 
并且新的顺序是6,3,4,5.其他行没有受到影响,就不用进行处理。那么我怎么知道哪些行受到影响呢!当你移到新的位置时,你可以通过新的位置去找它的下一个元素,这里就是3这个元素。这样我们就知道是3到6行受到影响;这个是向上拖拽。向下拖拽同理。

我们还要知道两点: 
1、当我们在进行拖拽时,被拖拽的当前行的样式class是会发生改变的!插件会给它添加一个名为:ui-sortable-helper类。如果不使用ui.item来获取当前元素,也可以通过这个类来获取。 
2、当我们移动的时候,该插件会在新的位置,放置一个起到占位符的元素,该元素的class为:ui-sortable-placeholder。所以在拖拽过程的事件中,我们可以通过该类来获取新位置的上一个元素或者下一个元素。 
插件添加的class在拖拽结束后都会移除掉! 
代码如下:

$(this).find('tr').filter('.ui-sortable-placeholder').prev('tr');//上一个元素
$(this).find('tr').filter('.ui-sortable-placeholder').next('tr');//下一个元素

stop事件是:当排序动作结束时触发此事件。 
在这个事件里依然也是业务逻辑的处理。 
sort事件里我只是获取到了当前元素位置、新位置的上一个或者下一个元素的位置(也就是两个参数)。在stop事件里,我将通过这两个参数来把受影响的行组装成新的顺序,并放到array数组中去。再通过ajax发送到后台保存到数据库里去!stop事件中逻辑处理代码:

var temp = "";
#{list items:eventTypeList, as:'n'}
     var sort = parseInt(${n.sort});
     if(sort >= select_sx && sort <= place_sx){

     if(sort == parseInt(select_sort)){//当前拖拽的元素 向上拖拽,当前元素放在数组第一个,向下,放在数组最后一个
        if(flag){//向下 - 按顺序来
           temp = ${n.id};
        }else{//向上排序
          array.splice(0,0,${n.id});
     }
    }else{
        array.push(${n.id});
  }
}
#{/list}
if(flag){
  array.splice(place_sx-select_sx,0,temp); //第一个参数是添加/删除项目的位置,第二个参数是:删除的项目数量 0就是不会删除项目 第三个参数添加新项目
}

数据库表中有个sort字段,专门用来记录顺序的!

最后$(“#sortable”).disableSelection();//防止拖拽时选中文本内容!

Jquery Sortable实现div拖动排序效果 Jquery Sortable实现div拖动排序效果 Jquery Sortable实现div拖动排序效果 立即下载

相关推荐

JS实现图片拖拽排序(亲测可用)

前端用于鼠标拖拽排序,亲测可用,如果需要动态加载数据,请设置延迟加载

jquery sortable实现table拖拽排序,更新时只更新受影响的行

最开始使用时,我是参考这篇文章: http://www.oschina.net/code/snippet_203508_7090 可以点击“全屏查看所有代码”,可以看得更清楚。1、引入:jQuery文件和jquery-ui.js<script src="@{'/public/javascripts/jquery-1.11.1.min.js'}" charset="UTF-8"></script>

山鬼谣的专栏 2万+

JQ JS javascript 拖拽 排序功能 列表排序 菜单排序 表格排序

JQ JS javascript 拖拽 排序功能 列表排序 菜单排序 表格排序

jQuery UI sortable()实现拖动排序

【代码】jQuery UI sortable()实现拖动排序。

IT枫斗者的博客 1787

Seafile搭建以及onlyoffice在线办公

部署seafile docker-compose.yml 如下: 参考此篇文章 version: '2.0' services: db: image: mariadb:10.1 container_name: seafile-mysql environment: - MYSQL_ROOT_PASSWORD=db_dev # mysql root的密码,同时修改 seafile的DB_ROOT_PASSWD与这个一致 - MYSQL_LOG_CONSOLE

dwdcth的专栏 4659

用Matlab机器人工具箱搞定六轴机械臂建模:从DH参数到3D可视化(附完整代码)

本文详细介绍了如何使用Matlab机器人工具箱进行六轴机械臂建模,涵盖从DH参数转换到3D可视化的完整流程。通过正运动学验证、逆解计算和工作空间分析等实战案例,帮助开发者快速掌握机械臂建模技巧,并提供性能优化建议和完整代码示例。

weixin_28733637的博客 361

easyui树拖拽排序java_Jquery easyui treegrid实现树形表格的行拖拽

前几天修改了系统的一个功能——实现树形列列表的行拖拽,以达到排序的目的。现在基本上功能实现,现做一个简单的总结。1.拿到这个直接网上搜,有好多,但是看了后都觉得不是太复杂就是些不是特别想看的例子,自己太懒(对自己不是很熟悉的东西是不愿意第一去看的)。结果选择良久,还是jquery easyui treegrid这个例子自己看起来比较熟悉。于是就专心研究了,从官方网站http://www.jeasy...

weixin_35381077的博客 592

Hierarchical-Localization 环境配置与依赖管理全攻略

本文提供了Hierarchical-Localization(hloc)视觉定位工具箱从零开始的环境配置与依赖管理全攻略。针对Windows、Ubuntu和macOS三大操作系统,详细解析了Python版本选择、PyTorch与CUDA版本匹配、pycolmap版本锁定等核心依赖的安装步骤,并汇总了权重文件格式、NumPy版本、路径配置等常见问题的排查与解决方案,旨在帮助用户高效搭建稳定的hloc开发环境。

weixin_29066781的博客 335

jquery +jquery.tablesorter+jquery.tablednd_0_5实现table表格可按行拖拽,按列排序,并可以保存排序后的结果

jsp页面 response.setHeader("Pragma","No-cache"); response.setHeader("Cache-Control","no-cache"); response.setDateHeader("Expires", 0);  String path = request.getContextPath();  String basePa

liuzhigang1237的专栏 6046

手把手教你用UC3844设计多路输出反激电源(附PCB布局避坑指南)

本文详细介绍了使用UC3844设计多路输出反激电源的实战技巧,包括核心电路设计、变压器参数计算、PCB布局优化及EMI抑制方法。通过实验室实测数据和项目经验,帮助工程师避开常见设计陷阱,提升电源性能和可靠性。特别附赠PCB布局避坑指南,助力高效完成开关电源设计。

weixin_30300225的博客 570

逆变器技术解析:DDSRF双解耦在正负序分离中的关键作用

本文深入解析了DDSRF双解耦技术在逆变器正负序分离中的关键作用。通过建立正反旋转坐标系并利用交叉反馈解耦网络,DDSRF能快速、精准地分离电网电压中的正负序分量,从而显著提升锁相环在电网不平衡条件下的精度与系统稳定性,是现代高性能并网逆变器的核心算法之一。

m3n5b7v8c9x的博客 413

jquery实现table表格的拖拽排序

1 function addEvent(el,list){ // 参数说明:(table对象,数据列表) 2 $(el).find('tbody>tr').each(function(i, ele){ 3 4 $(ele).off("dragstart dragover dragleave drop...

weixin_34097242的博客 834

Codex 100个真实案例 - 用AI做英语单词计划学习工具(记忆曲线+测验)

背单词是英语学习的基本功,但市面上的背单词 APP 要么收费、要么广告太多。本案例用 Codex 从零打造一个 **英语单词计划学习工具**,实现 SM-2 间隔重复算法(Anki 的核心算法)、单词本增删改查、多种测验模式(选择题/拼写/听写)、TTS 发音播放,以及学习数据的可视化统计图表。全程用自然语言驱动 Codex,用 Python 写后端逻辑 + 终端 UI,打造你的私人背单词助手!

yueyeguzhuo的专栏 208

拖拽排序 ajax,通过jquery-ui中的sortable来实现拖拽排序

1.引入文件2.给元素附上sortable类3.开启并配置$(function() {$(".sortable").sortable({cursor: "move",items: "tr", //只是tr可以拖动opacity: 0.6, //拖动时,透明度为0.6revert: true, //释放时,增加动画update: function(event, ui) { //更新排序之后var c...

weixin_29098367的博客 303

钉钉多维表格开发

从0到1完成钉钉多维表格开发SDK对接与实践案例。

沉修所长,勇逐新机;安而不怠,静而思变 3650

工业质检终极方案:C#上位机融合 YOLO+Blob分析(一站式尺寸测量+缺陷检测)

本次上位机界面严格遵循工业现场操作规范简洁、直观、按钮大、文字清晰、参数可视化调节,操作人员为车间工人/质检员,无需复杂操作,所有功能一目了然。所有控件均为WinForms原生控件,拖拽即可完成布局,无任何自定义控件,开发效率拉满,核心布局永久复用本次实战完成的C#上位机+YOLO+Blob融合质检方案,是工业规则零件全尺寸质检的终极落地方案,完美解决了单一检测方案的所有短板,具备以下不可替代的工业价值。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1344

利用插件(jQuery-ui.js)实现表格行的拖拽排序

template 模板(html) 首先要引入jQuery-ui.js的文件、import './../../scripts/base/jquery/jquery-ui.min.js';<table class="table-common" id="aggVDtTable"> <thead> <tr style="width...

weixin_30388677的博客 462

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

jquery拖拽排序,针对后台列表table进行拖拽排序(超实用!)

    现在很多后台列表为了方便均使用拖拽排序的功能,对列表进行随意的排序。 话不多说 ,我在网上找了一些demo,经过对比,现在把方便实用的一个demo列出来,基于jqueryUI.js 先上html代码,很简单: &lt;!DOCTYPE html&gt; &lt;html lang="en"&gt; &lt;head&gt; &lt;meta charset="UTF-8"&...

weixin_34148456的博客 342

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

用Jquery实现列表拖拽

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>jqueryUI拖动</title> </head> <script src="jquery-3.5.0.min.js"></script> <script src="//apps.bdimg.com/libs/jqueryui/1.10..

Godsname的博客 624

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

jquery sortable 和设置cookie 保存排序

引入js文件

lsx1065227020的专栏 868

tableDnD 实现table 行拖拽

首先需要把该插件导入,路径按照你的相对路径进行填写. $(document).ready(function(){  $("table").tableDnD({ //在table节点上进行操作.也可绑定到相应的id或者class上,          onDrop:function(table,row){//这是拖拽之后执行的函数....我个人理解是触发了该事件.... //  alert

Vein Cook 1823

jquery-ui 拖拽排序

 : 引入 <script src="//code.jquery.com/jquery-1.9.1.js"></script> <script src="//code.jquery.com/ui/1.10.4/jquery-ui.js"></script>     <tbody id="sortabl...

weixin_30782293的博客 98

sortable拖拽行进行排序

使用鼠标调整列表中或者网格中元素的排序,通过鼠标点击并拖拽元素到列表中的一个新的位置,其它条目会自动调整

m0_61686955的博客 1079

jquery 拖动排序插件tableDnD

table拖拽排序并保存数据库 ①:引入jquery.js以及 ②:在页面每一行后面加入原始数据的id和显示顺序 initSeqArray.push("${id}_${showSeq}"); ③:在页面上添加保存拖拽后保存顺序的按钮 为每一条记录的tr添加id ③:初始化插件 var initSeqArray = new Array(); va

dly120219891208的专栏 2969
上一篇: table鼠标移动拖动点击排序
下一篇: JQuery - Sizzle选择器引擎原理分析
ole_triangle_java
博客等级 码龄10年 82粉丝 83原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值