jquery ui sortable拖拽后保存位置


Posted in jQuery onApril 27, 2017

jqueryUI sortable 可以用来进行页面拖拽布局,然而有一个小问题就是拖拽后如何保存状态。

工作中遇到了这个情况,遍把这个问题记了下来,具体思路是:

利用拖拽stop后利用

 var arr = $( ".sortable" ).sortable('toArray');

记录拖拽后的id数组顺序,然后把这个数组存起来,可以存cookie,数据库,localstorage等,刷新页面后读取这个数组,然后进行重新排序。

具体的代码如下可直接复制运行。本文将数组保存在localstorage里面。

<!doctype html>
<html lang="en">
<head>
 <meta charset="utf-8">
 <title>jQuery UI 拖动(Draggable) - 约束运动</title>
 <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
 <link rel="stylesheet" href="http://code.jquery.com/ui/1.10.4/themes/smoothness/jquery-ui.css" rel="external nofollow" >
 <script src="http://cdn.bootcss.com/jquery/3.1.0/jquery.min.js"></script>
 <script src="http://code.jquery.com/ui/1.10.4/jquery-ui.js"></script>
 <!-- <link rel="stylesheet" href="http://jqueryui.com/resources/demos/style.css" rel="external nofollow" > -->
 <style>
  *{
   margin:0;
   padding: 0;
   box-sizing: border-box;
  }
  .container{
   border: 1px solid black;
   margin-bottom: 10px;
   margin-top: 10px;
  }
  .container:after{
   content: "";
   display: block;
   clear: both;
  }
  .drag{
   width: 200px;
   height: 200px;
   float: left;
  }
  ul li {
   list-style: none;
  }
  .innerdiv{
   padding: 10px;
   height: 100%;
  }
  .innerdiv2{
    background: grey;
    height: 100%;
   }
  #draggable1{
   width: 400px;
   height: 400px;
  }
 .move{
  width: 80px;
  height: 40px;
  background: blanchedalmond;
 }
 </style>
 <script>
 $(function() {
  var arr = '';
  var sort = $( ".sortable" ).sortable({
    handle: ".move",
    opacity: 0.7,
    delay: 150,
    cursor:'move',
    revert: true,
    stop:function(){
 //记录sort后的id顺序数组
    var arr = $( ".sortable" ).sortable('toArray');
      console.log(arr);
//拖拽后利用localStorage记录顺序
      localStorage.arr = arr;
    }
  });
  var localSt = localStorage.arr;
  //如果有localst记录则,按照这个进行排序元素
  if(localSt){
    var resArr = localSt.split(',');
    var resUl = $('ul');
    //li 数组
    for(var i = 0;i < resArr.length;i++){
      resUl.append($("#" + resArr[i]));
    }
  }
 });
 </script>
</head>
<body>
  <div class="container">
   <ul class="sortable">
     <li id="draggable2" class="drag">
      <div class="innerdiv">
        <div class="innerdiv2">
         <div class="move">放在这里</div> 
         只有鼠标放在小长方形里才能移动
        </div>
      </div>
     </li>
     <li id="draggable3" class="drag">
       <div class="innerdiv">
        <div class="innerdiv2">
        <div class="move">放在这里</div> 
        </div>
     </div>
     </li> 
     <li id="draggable4" class="drag">
       <div class="innerdiv">
         <div class="innerdiv2">
         <div class="move">放在这里</div> 
        </div>
       </div>
     </li> 
     <li id="draggable5" class="drag">
       <div class="innerdiv">
         <div class="innerdiv2">
         <div class="move">放在这里</div> 
         </div>
       </div>
     </li> 
     <li id="draggable6" class="drag">
       <div class="innerdiv">
         <div class="innerdiv2">
         <div class="move">放在这里</div> 
        </div>
     </div>
     <li id="draggable1" class="drag">
       <div class="innerdiv">
        <div class="innerdiv2">
         <div class="move">放在这里</div> 
        </div>
       </div>
     </li>
     </li> 
   </ul>
  </div>
</body>
</html>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

jQuery 相关文章推荐
详解如何在 vue 项目里正确地引用 jquery 和 jquery-ui的插件
Jun 01 jQuery
jQuery Ajax使用FormData上传文件和其他数据后端web.py获取
Jun 11 jQuery
jQuery Json数据格式排版高亮插件json-viewer.js使用方法详解
Jun 12 jQuery
jQuery实现点击下拉框中的值累加到文本框中的方法示例
Oct 28 jQuery
关于jquery layui弹出层的使用方法
Apr 21 jQuery
jQuery实现的简单对话框拖动功能示例
Jun 05 jQuery
jquery 动态遍历select 赋值的实例
Sep 12 jQuery
jQuery实现点击图标div循环放大缩小功能
Sep 30 jQuery
jquery实现Ajax请求的几种常见方式总结
May 28 jQuery
jquery+ajax实现上传图片并显示上传进度功能【附php后台接收】
Jun 06 jQuery
jQuery创建折叠式菜单
Jun 15 jQuery
jQuery实现移动端下拉展现新的内容回弹动画
Jun 24 jQuery
jquery 禁止鼠标右键并监听右键事件
Apr 27 #jQuery
jQuery EasyUI tree增加搜索功能的实现方法
Apr 27 #jQuery
JS/jquery实现一个网页内同时调用多个倒计时的方法
Apr 27 #jQuery
jQuery使用正则验证15/18身份证的方法示例
Apr 27 #jQuery
jQuery鼠标悬停内容动画切换效果
Apr 27 #jQuery
使用jQuery,Angular实现登录界面验证码详解
Apr 27 #jQuery
jQuery实现鼠标滑过预览图片大图效果的方法
Apr 26 #jQuery
You might like
一些常用的php函数
2006/12/06 PHP
php5 pdo新改动加载注意事项
2008/09/11 PHP
PHP缓存机制Output Control详解
2014/07/14 PHP
PHP Post获取不到非表单数据的问题解决办法
2018/02/27 PHP
php简单计算权重的方法示例【适合抽奖类应用】
2019/06/10 PHP
jquery如何把数组变为字符串传到服务端并处理
2014/04/30 Javascript
jQuery选择id属性带有点符号元素的方法
2015/03/17 Javascript
用Move.js配合创建CSS3动画的入门指引
2015/07/22 Javascript
javascript生成img标签的3种实现方法(对象、方法、html)
2015/12/25 Javascript
JS获取CSS样式(style/getComputedStyle/currentStyle)
2016/01/19 Javascript
JSON 必知必会 观后记
2016/10/27 Javascript
React Native预设占位placeholder的使用
2017/09/28 Javascript
浅析JS中什么是自定义react数据验证组件
2018/10/19 Javascript
Vue触发式全局组件构建的方法
2018/11/28 Javascript
解决element ui select下拉框不回显数据问题的解决
2019/02/20 Javascript
Vue 中 a标签上href无法跳转的解决方式
2019/11/12 Javascript
js事件机制----捕获与冒泡机制实例分析
2020/05/22 Javascript
vue+elementui实现点击table中的单元格触发事件--弹框
2020/07/18 Javascript
vue使用Sass时报错问题的解决方法
2020/10/14 Javascript
python 实时得到cpu和内存的使用情况方法
2018/06/11 Python
在python带权重的列表中随机取值的方法
2019/01/23 Python
python+opencv实现摄像头调用的方法
2019/06/22 Python
Python3.0 实现决策树算法的流程
2019/08/08 Python
详解pandas绘制矩阵散点图(scatter_matrix)的方法
2020/04/23 Python
python 爬取B站原视频的实例代码
2020/09/09 Python
纽约现代艺术博物馆商店:MoMA STORE(室内家具和杂货商品)
2016/08/02 全球购物
美国娱乐和流行文化商品店:FYE
2017/09/14 全球购物
沃尔玛旗下墨西哥超市:Bodega Aurrera
2020/11/13 全球购物
高二政治教学反思
2014/02/01 职场文书
《和我们一样享受春天》教学反思
2014/02/07 职场文书
教师年度考核评语
2014/04/28 职场文书
协议书范文
2015/01/27 职场文书
工程部部长岗位职责
2015/02/12 职场文书
小学教育见习总结
2015/06/23 职场文书
食品安全主题班会
2015/08/13 职场文书
我的中国梦心得体会范文
2016/01/05 职场文书