jQuery实现拖拽页面元素并将其保存到cookie的方法


Posted in Javascript onJune 12, 2016

本文实例讲述了jQuery实现拖拽页面元素并将其保存到cookie的方法。分享给大家供大家参考,具体如下:

实现的效果就是页面内的图片可拖拽到任意位置,并将所在位置保存.下次打开页面依然可见.本文是作demo用,实际开发中,位置的数据应保存到数据库中

好了,开始

1.准备工作

a.jquery(1.7.2),ui,cookie插件,json插件.一些图片(本文是5张)

2.页面

上代码

<div class="img_list" id="img_list">
<div id="baidu"><img src="img/baidu.jpg" id="www.baidu.com"></div>
<div id="google"><img src="img/google.png" id="www.google.com"></div>
<div id="csdn"><img src="img/csdn.jpg" id="www.csdn.net"></div>
<div id="fly"><img src="img/fly.jpg" id="www.jfbcb.com"></div>
<div id="163"><img src="img/163.jpg" id="www.163.com"></div>
</div>

接下,先为每个img的父元素增加draggable,并且动态改变id,这样便于记录时减少工作量.当然,先得给它来2个事件,mouseenter,mouseleave.代码如下

$("#img_list div").on({
mouseenter: function(){
      $(this).addClass('img_move');
      _t_id =$(this).attr('id');//保存原来id
      $('div.img_move').attr('id','img_move');
},
mouseleave: function(){
       $('#img_move').removeClass('img_move').attr('id',_t_id);
      _t_id = '';//清空,临时保存id
    }
});

到目前为止,我们已实现动态加载id,下面重点来了,让div可拖拽

只要在mouseenter事件中加上这句就行,这样当鼠标进入某块div时,div就变成可拖拽的了

$( "#img_move").draggable();

3.拖拽后的保存

如果,你刷新页面会发现,刚拖拽的图片,会恢复到初始位置.这个肯定不行,于是,保存就成了必须.实际开发一定要保存到数据库,因为,客户要是清空了cookie效果全部没有了...坑爹的360常干这事

这里除了cookie还要用到json插件,这样保存的时候会方便并且把拖拽后元素的信息储备到同一个对象中,便于读取

上代码

$( "#img_move").draggable({
   start:function(e,ui){
   ui.helper.css('z-index','999'); //拖动时元素一直是不被遮蔽
   },
   stop:function(e,ui){
    ui.helper.css('z-index','0'); //拖动结束,让元素可遮蔽
    var x = ui.position.left ;
    var y = ui.position.top;
    var id = _t_id;
    var temp = {'id':id,'x':x,'y':y};
    var _data = $.toJSON(temp);//转成json
    $.cookie('img_list_'+_t_id,_data,{expires:1}); //保存信息,设置有效时间
    }
});

ps:元素在页面中的位置,简单的说是left,top的值决定的

4.刷新后载入

window.onload后把cookie保存的信息读出来,并赋到对应元素上

window.onload = function(){
  fix_img('baidu');
    fix_img('google');
    fix_img('csdn');
    fix_img('fly');
    fix_img('163');
  };
//fix_img
function fix_img(id){
 if(id){
   var _test_data = $.cookie('img_list_'+id);
   var _id = $.evalJSON(_test_data).id;
   var _x = $.evalJSON(_test_data).x;
   var _y = $.evalJSON(_test_data).y;    
     $('#'+_id).css('left',_x+'px').css('top',_y+'px');
  }
}

5.总结:

①.思路是先拖后保存.实现方式各有不同

②.实际开发一定要保存到数据库

希望本文所述对大家jQuery程序设计有所帮助。

Javascript 相关文章推荐
一款JavaScript压缩工具:X2JSCompactor
Jun 13 Javascript
jQuery Flash/MP3/Video多媒体插件
Jan 18 Javascript
用JS实现一个TreeMenu效果分享
Aug 28 Javascript
把字符串按照特定的字母顺序进行排序的js代码
Jan 28 Javascript
JavaScript函数的4种调用方法详解
Apr 22 Javascript
js实现格式化金额,字符,时间的方法
Feb 26 Javascript
javascript实现继承的简单实例
Jul 26 Javascript
动态生成的DOM不会触发onclick事件的原因及解决方法
Aug 06 Javascript
浅谈js对象的创建和对6种继承模式的理解和遐想
Oct 16 Javascript
完美解决linux下node.js全局模块找不到的情况
May 16 Javascript
swiper在angularjs中使用循环轮播失效的解决方法
Sep 27 Javascript
配置node服务器并且链接微信公众号接口配置步骤详解
Jun 21 Javascript
仅一个form表单 js实现注册信息依次填写提交功能
Jun 12 #Javascript
JS+HTML5手机开发之滚动和惯性缓动实现方法分析
Jun 12 #Javascript
浅谈如何实现easyui的datebox格式化
Jun 12 #Javascript
JQuery的attr 与 val区别
Jun 12 #Javascript
从重置input file标签中看jQuery的 .val() 和 .attr(“value”) 区别
Jun 12 #Javascript
Java框架SSH结合Easyui控件实现省市县三级联动示例解析
Jun 12 #Javascript
jQuery基于toggle实现click触发DIV的显示与隐藏问题分析
Jun 12 #Javascript
You might like
php 文件上传类代码
2011/08/06 PHP
php操作SVN版本服务器类代码
2011/11/27 PHP
PHP实现递归无限级分类
2015/10/22 PHP
Thinkphp框架使用list_to_tree 实现无限级分类列出所有节点示例
2020/04/04 PHP
javascript 特殊字符串
2009/02/25 Javascript
JQuery魔力之$(&quot;tagName&quot;)与selector
2012/03/05 Javascript
JS TextArea字符串长度限制代码集合
2012/10/31 Javascript
js日期、星座的级联显示代码
2014/01/23 Javascript
jQuery中parents()和parent()的区别分析
2014/10/28 Javascript
jquery密码强度校验
2015/12/02 Javascript
jQuery的each循环用法简单示例
2016/06/12 Javascript
【经验总结】编写JavaScript代码时应遵循的14条规律
2016/06/20 Javascript
jQueryUI Datepicker组件设置日期高亮
2016/10/13 Javascript
Chrome不支持showModalDialog模态对话框和无法返回returnValue问题的解决方法
2016/10/30 Javascript
ES6概念 Symbol.keyFor()方法
2016/12/25 Javascript
vue中实现左右联动的效果
2018/06/22 Javascript
Paypal支付不完全指北
2020/06/04 Javascript
用Python脚本生成Android SALT扰码的方法
2013/09/18 Python
Python如何实现守护进程的方法示例
2017/02/08 Python
解决Python2.7读写文件中的中文乱码问题
2018/04/12 Python
python flask 如何修改默认端口号的方法步骤
2019/07/12 Python
Django Channels 实现点对点实时聊天和消息推送功能
2019/07/17 Python
Python将主机名转换为IP地址的方法
2019/08/14 Python
python rsync服务器之间文件夹同步脚本
2019/08/29 Python
Django模板导入母版继承和自定义返回Html片段过程解析
2019/09/18 Python
pycharm运行scrapy过程图解
2019/11/22 Python
python json 递归打印所有json子节点信息的例子
2020/02/27 Python
HTML5印章绘制电子签章图片(中文英文椭圆章、中文英文椭圆印章)
2019/06/03 HTML / CSS
享誉全球的多元化时尚精品购物平台:Farfetch发发奇(支持中文)
2017/08/08 全球购物
英国一家集合了众多有才华设计师品牌的奢侈店:Wolf & Badger
2018/04/18 全球购物
乌克兰在线药房:Аптека24
2019/10/30 全球购物
设计大赛策划方案
2014/06/13 职场文书
商场周年庆活动方案
2014/08/19 职场文书
预备党员半年考察意见
2015/06/01 职场文书
SQL Server连接查询的实用教程
2021/04/07 SQL Server
Python 批量下载阴阳师网站壁纸
2021/05/19 Python