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 相关文章推荐
JS创建优美的页面滑动块效果 - Glider.js
Sep 27 Javascript
javascript 常用关键字列表集合
Dec 04 Javascript
不同浏览器的怪癖小结
Jul 11 Javascript
jQuery 中使用JSON的实现代码
Dec 01 Javascript
jQuery实现设置、移除文本框默认值功能
Jan 13 Javascript
JS中split()用法(将字符串按指定符号分割成数组)
Oct 24 Javascript
BootStrap实现响应式布局导航栏折叠隐藏效果(在小屏幕、手机屏幕浏览时自动折叠隐藏)
Nov 30 Javascript
js中DOM事件绑定分析
Mar 18 Javascript
Vue 如何使用props、emit实现自定义双向绑定的实现
Jun 05 Javascript
Vue+Element UI 树形控件整合下拉功能菜单(tree + dropdown +input)
Aug 28 Javascript
vue中利用three.js实现全景图的完整示例
Dec 07 Vue.js
javascript实现用户必须勾选协议实例讲解
Mar 24 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
四个常见html网页乱码问题及解决办法
2015/09/08 PHP
总结PHP中DateTime的常用方法
2016/08/11 PHP
Laravel 批量更新多条数据的示例
2017/11/27 PHP
传递参数的标准方法(jQuery.ajax)
2008/11/19 Javascript
基于jQuery的合并表格中相同文本的相邻单元格的代码
2011/04/06 Javascript
JavaScript下通过的XMLHttpRequest发送请求的代码
2011/06/28 Javascript
js鼠标点击事件在各个浏览器中的写法及Event对象属性介绍
2013/01/24 Javascript
鼠标事件的screenY,pageY,clientY,layerY,offsetY属性详解
2015/03/12 Javascript
Grunt入门教程(自动任务运行器)
2015/08/06 Javascript
React快速入门教程
2017/01/17 Javascript
详解bootstrap的modal-remote两种加载方式【强化】
2017/01/27 Javascript
vue实现app页面切换动画效果实例
2017/05/23 Javascript
Angular5中调用第三方库及jQuery的添加的方法
2018/06/07 jQuery
NodeJs crypto加密制作token的实现代码
2019/11/15 NodeJs
Vue实现 点击显示再点击隐藏效果(点击页面空白区域也隐藏效果)
2020/01/16 Javascript
Javascript执行流程细节原理解析
2020/05/14 Javascript
Python中使用动态变量名的方法
2014/05/06 Python
python网络编程学习笔记(七):HTML和XHTML解析(HTMLParser、BeautifulSoup)
2014/06/09 Python
Pandas 对Dataframe结构排序的实现方法
2018/04/10 Python
Python实现ping指定IP的示例
2018/06/04 Python
python中单下划线_的常见用法总结
2018/07/10 Python
python selenium firefox使用详解
2019/02/26 Python
python中对数据进行各种排序的方法
2019/07/02 Python
利用python求积分的实例
2019/07/03 Python
python中的&amp;&amp;及||的实现示例
2019/08/07 Python
Django中自定义查询对象的具体使用
2019/10/13 Python
使用CSS Grid布局实现网格的流动
2014/12/30 HTML / CSS
使用CSS3实现一个3D相册效果实例
2016/12/03 HTML / CSS
Ryderwear澳洲官网:澳大利亚高端健身训练装备品牌
2018/09/18 全球购物
幼儿园大班新学期寄语
2014/01/18 职场文书
企业宣传方案
2014/03/04 职场文书
2014国庆节主题活动方案:快乐的国庆节
2014/09/16 职场文书
大学开学感言
2015/08/01 职场文书
python geopandas读取、创建shapefile文件的方法
2021/06/29 Python
高性能跳频抗干扰宽带自组网电台
2022/02/18 无线电
pytorch分类模型绘制混淆矩阵以及可视化详解
2022/04/07 Python