https://blog.csdn.net/u013066244/article/details/51954198

<link ref="stylesheet" href="jquery-ui.min.css"/>
<script type="text/javascript" src="jquery.min.js"></script>
<script type="text/javascript" src="jquery-ui.min.js"></script>

<div class="form-group">
  <label class="control-label col-sm-1">曲谱图片</label>
  <ul id="layer-img" class="control-label col-sm-9 sortable" style="text-align: left;">
    <volist name="data.image" id="image">
      <li class="portlet" style="display: inline-block" id="{$image['id']}">
        <img id="sheet_img{$image['id']}" src="{$image['url']}" alt="">
      </li>
    </volist>
  </ul>
</div>

<script>
$('.sortable').sortable({
items: "li", //只是li可以拖动
opacity: 0.6, //拖动时,透明度为0.6
cursor: "move", // 拖拽时的鼠标形状
     forceHelperSize: true, // 自适应placeholder的大小
//appendTo: '.drag-task', // 拖拽的父级节点(该节点一定要注意,配置错误会导致当前屏幕外的元素没法自动滚动拖拽,两列之间拖拽的滚动也会出问题)
placeholder: "portel-placeholder" //设定占位符,事先设定占位符的样式,拖曳时会出现占位符
// 拖拽时的倾斜度
rotate: '5deg',
// 延迟时间(毫秒),避免和click同时操作时出现的冲突
delay: 150,
// 以clone方式拖拽
helper: 'clone',
// 拖拽到边框出现滚动的间距,
scrollSensitivity:scrollingSensitivity,
// 应用于拖拽空白区域的样式
placeholder: 'portlet-placeholder ui-state-highlight',
// 允许拖拽预留空白区域
     forcePlaceholderSize: true,
     // 多个列表之间的拖拽的dom元素
//connectWith: '.task-lists',
update: function() { //因为是要拖曳改变图片顺序,所以选择update,拖曳更新后调用函数
var image_ids = $('.sortable').sortable('toArray', {attribute: id});//获取class为sortable的子级的id属性值,并转化为数组;
$.ajax({
type: "post",
url: "",
data: {image_ids},
dataType: "json",
success: function(result) {
window.location.reload(); //后台获取到数据刷新页面
}
});
}
});
</script>
stop: (e, ui) => {
// 当前拽入的元素
let item = $(ui.item)
// 当前拽入元素的下标
let index = item.index()
let kid = ''
// xxxx 这里面可以操作数据更新
},
// 开始拖拽时的函数
start: (e, ui) => {
// 拖拽前的父级节点
dragBeforeParentNode = ui.item[0].parentNode
// 让placeholder和源高度一致
ui.placeholder.height(ui.helper[0].scrollHeight).width(258)
// xxxx 这里可以记录一些拖拽前的元素属性
},
// 处理两列滚动条问题
sort:function(event, ui){
var scrollContainer = ui.placeholder[0].parentNode
// 跨列拖拽的情况
if (dragBeforeParentNode && dragBeforeParentNode.id !== scrollContainer.id) {
// 设置拽入的列表的滚动位置
var overflowOffset = $(scrollContainer).offset()
if((overflowOffset.top + scrollContainer.offsetHeight) - event.pageY < scrollingSensitivity) {
scrollContainer.scrollTop = scrollContainer.scrollTop + scrollingSpeed
} else if(event.pageY - overflowOffset.top < scrollingSensitivity) {
scrollContainer.scrollTop = scrollContainer.scrollTop - scrollingSpeed
}
}
}
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});
}
}

 

jquery-ui sortable 排序的更多相关文章

  1. Jquery UI sortable

    所有的事件回调函数都有两个参数:event和ui,浏览器自有event对象,和经过封装的ui对象 ui.helper - 表示sortable元素的JQuery对象,通常是当前元素的克隆对象 ui.p ...

  2. jquery ui sortable 实现table,row的拖动。(Make Table Rows Sortable Using jQuery UI Sortable)

    // Return a helper with preserved width of cells var fixHelper = function(e, ui) { //console.log(ui) ...

  3. jquery ui 插件------------------------->sortable

    <!doctype html><html lang="en"><head>  <meta charset="utf-8" ...

  4. jquery 鼠标拖动排序Li或Table

    1.前端页面 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="拖动排序Li或Ta ...

  5. 160620、利用 jQuery UI 和 Ajax 创建可定制的 Web 界面

    如今,网站比以往更具可定制性,允许用户更改其空间,根据自己的喜好对其进行个性化.个性化的主页或仪表板页面(例如 iGoogle.MyYahoo! 和 MyAOL)日渐普及,大多数 Web 应用程序内甚 ...

  6. jQuery UI =>jquery-ui.js中sortable方法拖拽对象位置偏移问题

    今天要处理sortable方法处理的对象,拖拽的时候,位置偏移的问题. 按理应该是鼠标在哪,对象就跟着在哪的 百度了一下问题,http://blog.csdn.net/samed/article/de ...

  7. Jquery UI

    jQuery UI简介 jQuery UI包含了许多维持状态的小部件(Widget),因此,它与典型的 jQuery 插件使用模式略有不同.所有的 jQuery UI 小部件(Widget)使用相同的 ...

  8. 三、jQuery--jQuery基础--jQuery基础课程--第10章 jQuery UI型插件

    1.拖曳插件——draggable 拖曳插件draggable的功能是拖动被绑定的元素,当这个jQuery UI插件与元素绑定后,可以通过调用draggable()方法,实现各种拖曳元素的效果,调用格 ...

  9. jQuery UI 入门之实用实例分享

    jQuery UI 入门 jQuery UI 简介 jQuery UI 是一个建立在 jQuery JavaScript 库上的小部件和交互库,您可以使用它创建高度交互的 Web 应用程序.无论您是创 ...

  10. jQuery UI 入门之实用实例

    jQuery UI 入门 jQuery UI 简介 jQuery UI 是一个建立在 jQuery JavaScript 库上的小部件和交互库,您可以使用它创建高度交互的 Web 应用程序.无论您是创 ...

随机推荐

  1. Leetcode 70. Climbing Stairs 爬楼梯 (递归,记忆化,动态规划)

    题目描述 要爬N阶楼梯,每次你可以走一阶或者两阶,问到N阶有多少种走法 测试样例 Input: 2 Output: 2 Explanation: 到第二阶有2种走法 1. 1 步 + 1 步 2. 2 ...

  2. [SDOI2008]烧水问题 规律

    题目描述 把总质量为1kg的水分装在n个杯子里,每杯水的质量均为(1/n)kg,初始温度均为0℃.现需要把每一杯水都烧开.我们可以对任意一杯水进行加热.把一杯水的温度升高t℃所需的能量为(4200*t ...

  3. 【Ant】How to print all the system properties in Ant build file

    在Ant里可以使用echoproperties task来达到目的 <target name="run"> <echoproperties /> </ ...

  4. chafen

    //f(u)>=f(v)+w //求最大值 跑最短路 v->u -w //求最小值 跑最长路 u->v w

  5. Linux磁盘分区管理

    1.分区步骤          fdisk -l                                  查看系统中的磁盘 fdisk /dev/vdb                   ...

  6. sqlserver 服务器监控

    1.表锁 查看被锁的表:select request_session_id spid,OBJECT_NAME(resource_associated_entity_id) tableName from ...

  7. Windows安装redis数据库以及集群部署

    1. 安装Redis版本:win-3.0.501https://github.com/MSOpenTech/redis/releases页面有,我下载的是zip版本的:Redis-x64-3.0.50 ...

  8. getResourceAsStream小结

    前提:我用的是gradle工程,文件放在resource下,resource对应的就是类路径,文件的路径和代码的路径保持一致,如Client的包名和peizhi.properties一致,例如Clie ...

  9. leetcode 437. 路径总和 III

    题目描述: 给定一个二叉树,它的每个结点都存放着一个整数值. 找出路径和等于给定数值的路径总数. 路径不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点). 二 ...

  10. C# 利用ADO.NET导出大批量数据

    2015年12月,XX项目中需要做一个数据导出功能,当时所有页面的到处功能均已经实现,但有个页面数据量太大,导出过程中导出页面直接卡死.不得已我准备选用ADO.NET来重新完成这个功能,因为考虑到越偏 ...