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. Servlet中Web.xml的配置详解(一)

    1 定义头和根元素 部署描述符文件就像所有XML文件一样,必须以一个XML头开始.这个头声明可以使用的XML版本并给出文件的字符编码.DOCYTPE声明必须立即出现在此头之后.这个声明告诉服务器适用的 ...

  2. Super-Resolution Restoration of MISR Images Using the UCL MAGiGAN System 超分辨率恢复

    作者是伦敦大学学院Mullard空间科学实验室成像组,之前做过对火星图像的分辨率增强. 文章用了许多的图像处理方法获得特征和高分辨率的中间结果,最后用一个生产对抗网络获得更好的高分辨率结果. 用的数据 ...

  3. 开源linux远程登录、远程文件管理(ftp)工具

    ssh远程登录用 PuTTY.Xshell 5 如果觉得命令行下敲命令管理文件麻烦,就用WinSCP.FileZilla Client(SSH模式),可做到文件上传.下载.改权限等等,很便捷

  4. vue项目中禁止移动端双击放大,双手拉大放大的方法

    在vue打包后生成的dist目录文件下下面有index.html 打开里面 把原来的这个 <meta name=viewport content="width=device-width ...

  5. 奇妙的 CSS几何图形

    三角形:通常会使用透明的border模拟出一个三角形:▲ .traingle { width:; height:; border-left: 50px solid transparent; borde ...

  6. Luogu P2073 送花 set

    这题...一眼set...但是打了一会儿.. 记录一下每个价格对应的美丽度,顺便充当vis数组,如果美丽度不为0,说明set里已经有了... 删除好说,删*s.begin()和*--s.end()就好 ...

  7. Java中的两个类:Desktop和SystemTray

    在JDK6中 ,AWT新增加了两个类:Desktop和SystemTray,前者可以用来打开系统默认浏览器浏览指定的URL,打开系统默认邮件客户端给指定的邮箱发邮件,用默认应用程序打开或编辑文件(比如 ...

  8. Oracle redo undo

    通常对undo有一个误解,认为undo用于数据库物理地恢复到执行语句或事务之前的样子,但实际上并非如此.数据库只是逻辑地恢复到原来的样子,所有修改都被逻辑地取消,但是数据结构以及数据库块本身在回滚后可 ...

  9. flink日记

    直接下载 解压, 运行 ./bin/start-cluster.sh 几个概念: 批处理: 大数据量,不要求实时. 输入源是有界的 流处理:实时要求高,通常在毫秒级, 数据量比较小,但是输入源是无界的 ...

  10. 第一章javascript简介

    javascript 当诞生于1995 最开始是目的是处理在服务器端进行的表单验证:让其在服务器端验证改为在服务端验证,大大提高速度(当时网络慢) 如今javascript是一门功能全面的语言,包含闭 ...