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的一些总结
Nov 03 Javascript
JQuery slideshow的一个小问题(如何发现及解决过程)
Feb 06 Javascript
javascript 日期时间 转换的方法
Feb 21 Javascript
SeaJS入门教程系列之SeaJS介绍(一)
Mar 03 Javascript
javascritp添加url参数将参数加入到url中
Sep 25 Javascript
简单谈谈jQuery(function(){})与(function(){})(jQuery)
Dec 19 Javascript
jquery hover 不停闪动问题的解决方法(亦为stop()的使用)
Feb 10 Javascript
Vue.js实现模拟微信朋友圈开发demo
Apr 20 Javascript
JS实现的四级密码强度检测功能示例
May 11 Javascript
vue form 表单提交后刷新页面的方法
Sep 04 Javascript
12个提高JavaScript技能的概念(小结)
May 09 Javascript
JavaScript自定义超时API代码实例
Apr 30 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
thinkphp控制器调度使用示例
2014/02/24 PHP
php实现保存submit内容之后禁止刷新
2014/03/19 PHP
CodeIgniter中使用cookie的三种方式详解
2014/07/18 PHP
PHP中ltrim与rtrim去除左右空格及特殊字符实例
2016/01/07 PHP
PHP中ID设置自增后不连续的原因分析及解决办法
2016/08/21 PHP
PHP面向对象程序设计之类与反射API详解
2016/12/02 PHP
php封装一个异常的处理类
2017/06/08 PHP
Ajax,UTF-8还是GB2312 eval 还是execScript
2008/11/13 Javascript
JSONP 跨域访问代理API-yahooapis实现代码
2012/12/02 Javascript
js二维数组定义和初始化的三种方法总结
2014/03/03 Javascript
jQuery验证插件validate使用方法详解
2020/09/13 Javascript
探究Vue.js 2.0新增的虚拟DOM
2016/10/20 Javascript
最通俗易懂的javascript变量提升详解
2017/08/05 Javascript
利用ES6的Promise.all实现至少请求多长时间的实例
2017/08/28 Javascript
详解React Native 采用Fetch方式发送跨域POST请求
2017/11/15 Javascript
如何重置vue打印变量的显示方式
2017/12/06 Javascript
小程序登录态管理的方法示例
2018/11/13 Javascript
bootstrap实现tab选项卡切换
2020/08/09 Javascript
jQuery列表动态增加和删除的实现方法
2020/11/05 jQuery
vue自定义组件实现双向绑定
2021/01/13 Vue.js
Python的Flask框架及Nginx实现静态文件访问限制功能
2016/06/27 Python
python RabbitMQ 使用详细介绍(小结)
2018/11/08 Python
pthon贪吃蛇游戏详细代码
2019/01/27 Python
python程序快速缩进多行代码方法总结
2019/06/23 Python
使用tensorflow DataSet实现高效加载变长文本输入
2020/01/20 Python
python实现俄罗斯方块游戏(改进版)
2020/03/13 Python
selenium WebDriverWait类等待机制的实现
2020/03/18 Python
Python Django中间件使用原理及流程分析
2020/06/13 Python
Sperry官网:帆船鞋创始品牌
2016/09/07 全球购物
会计电算化大学生职业规划书
2014/02/05 职场文书
党支部书记岗位责任制
2014/02/11 职场文书
大学生党员自我批评
2014/02/14 职场文书
关于诚信的活动方案
2014/08/18 职场文书
个人催款函范文
2015/06/24 职场文书
python开发的自动化运维工具ansible详解
2021/08/07 Python
各种货币符号快捷输入
2022/02/17 杂记