jquery 实现页面拖拽并保存到cookie
实现的效果就是页面内的图片可拖拽到任意位置,并将所在位置保存.下次打开页面依然可见.本文是作demo用,实际开发中,位置的数据应保存到数据库中.
好了,开始.
1.准备工作.
a.jquery(1.7.2),ui,cookie插件,json插件.一些图片(本文是5张).
2.页面.
上代码
|
1
2
3
4
5
6
7
|
<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.代码如下.
|
1
2
3
4
5
6
7
8
9
10
11
|
$("#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就变成可拖拽的了.
|
1
|
$( "#img_move").draggable(); |
3.拖拽后的保存.
如果,你刷新页面会发现,刚拖拽的图片,会恢复到初始位置.这个肯定不行,于是,保存就成了必须.实际开发一定要保存到数据库,因为,客户要是清空了cookie效果全部没有了...坑爹的360常干这事.
这里除了cookie还要用到json插件,这样保存的时候会方便并且把拖拽后元素的信息储备到同一个对象中,便于读取.
上代码
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
$( "#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保存的信息读出来,并赋到对应元素上.
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
window.onload = function(){ fix_img('baidu'); fix_img('google'); fix_img('csdn'); fix_img('fly'); fix_img('163'); };//fix_imgfunction 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.总结.
1.思路是先拖后保存.实现方式各有不同.
2.实际开发一定要保存到数据库.
3.参考了以下大大的文章.
http://www.zhangxinxu.com/wordpress/
ps:还一些,我记不得,如果是你,让我知道,加你的文章出处.
jquery 实现页面拖拽并保存到cookie的更多相关文章
- jQuery切换网页皮肤保存到Cookie实例
效果体验:http://keleyi.com/keleyi/phtml/jqtexiao/25.htm 以下是源代码: <!DOCTYPE html PUBLIC "-//W3C//D ...
- jQuery切换网页皮肤并保存到Cookie示例代码
经过使用,靠谱! <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://ww ...
- 监听页面中的某个div的滚动事件,并将其滚动距离保存到cookie
在html中,写一个id为type的div: <div class="type" id="type"></div> css: .type ...
- 个人学习记录1:二维数组保存到cookie后再读取
二维数组保存到cookie后再读取 var heartsArray = [[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0],[0,0, ...
- 将用户信息保存到Cookie中
/** * 把用户保存到Cookie * * @param request * @param response * @param member */ private void rememberPwdA ...
- jQuery网页元素拖拽插件
效果说明:配合已有CSS样式,载入插件后,网页元素可以随意在窗口内拖拽,设置了原位置半透明和拖拽半透明的效果选项,可根据需要选择.另外,当页面上有多个可拖拽元素时,可以载入另外一个用于设置z-inde ...
- Jquery.Sorttable 桌面拖拽自定义
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8&quo ...
- JQuery UI的拖拽功能
JQuery UI是JQuery官方支持的WebUI 代码库,包含底层交互.动画.特效等API,并且封装了一些Web小部件(Widget).同时,JQuery UI继承了jquery的插件支持,有大量 ...
- JQuery UI的拖拽功能实现方法小结
JQuery UI提供的API极大简化了拖拽功能的开发.只需要分别在拖拽源(source)和目标(target)上调用draggable和droppable两个函数即可. 拖拽原理 首先要明确几个概念 ...
随机推荐
- CentOS6.5 yum安装桌面环境
安装原因 安装centos6.5时选择了minimal CentOS最小化安装方式 需要使用浏览器拨号连接内网 安装过程 通过yum grouplist查询在 group 软件包中,Desktop.D ...
- PHP substr截取中文字符出现乱码的问题解疑
我们在使用PHP substr截取中文字符的时候,经常会出现乱码的情况,导致程序无法正常运行,这时怎么引起的呢?通过分析,我们知道,主要是substr可能硬生生的将一个中文字符“锯”成两半.解决办法: ...
- 【pyhton】短路逻辑
编程语言常用的逻辑if a and b:#如果a是false,那么跳过b的判断,结果直接falseif a or b:#如果a为true,那么跳过b的判断,直接true
- Windows安装Subversion
1.安装Setup-Subversion-1.8.16.msi下载地址:https://sourceforge.net/projects/win32svn/ 2.将svn添加到Windows系统服务s ...
- sql数据库优化技巧汇总
(转)SQL 优化原则 一.问题的提出 在应用系统开发初期,由于开发数据库数据比较少,对于查询SQL语句,复杂视图的的编写等体会不出SQL语句各种写法的性能优劣,但是如果将应用系统提交实际应用后,随着 ...
- js烟花特效
<!DOCTYPE html><html><head><style>body{background:#000;margin:0;}canvas{curs ...
- tcpdump 本机回环,应该用tcpdump -i lo
tcpdump 本机回环,应该用tcpdump -i lo
- Web 研发模式演变
前不久徐飞写了一篇很好的文章:Web 应用的组件化开发.本文尝试从历史发展角度,说说各种研发模式的优劣. 一.简单明快的早期时代 可称之为 Web 1.0 时代,非常适合创业型小项目,不分前后端,经常 ...
- bzoj 3624: [Apio2008]免费道路 生成树的构造
3624: [Apio2008]免费道路 Time Limit: 2 Sec Memory Limit: 128 MBSec Special JudgeSubmit: 111 Solved: 4 ...
- Connect them
zoj3204: 最小生成树,要求最小字典序的解. 用kruscal算法,先排序,输出的时候也要排序. /* zoj3204 解题思路: 赤裸裸的最小生成树.只是要求输出字典序最小的连接方案. 所以在 ...