Dojo之路:如何利用Dojo实现Drag and Drop效果


Posted in Javascript onApril 10, 2007

如今各种使用AJAX技术的站点都实现了Drag and Drop(拖动)效果,利用Dojo框架也可以很方便的实现,相比较其它框架,代码更少,且对浏览器的兼容性支持比较好。

先看一下效果,以下是51AJAX.com站点首页的效果,其中各个模块是可以任意拖动的:

Dojo之路:如何利用Dojo实现Drag and Drop效果

如何来实现呢?以下是具体步骤。为简单起见,做了一个Drag and Drop的Demo页面:

Dojo之路:如何利用Dojo实现Drag and Drop效果

以下是具体步骤:

1.html部分

要实现拖动,首先要有容器,其次要有可拖动的元素。在这里我们设置了三个Div作为容器,ID分别是container1,container2,container3,每个容器中各放置了一个Div作为可拖动元素,它们的class是divdrag。

2.javascript代码

首先在头部加入对dojo.js的引用,然后根据获取class为divdrag的元素,把它们注册为dojo.dnd.HtmlDragSource对象,再将container1,container2,container3注册为三个容器,且指定容器中的可拖动元素可以被拖动到的容器,以上事件封装成一个函数,增加至window.onload事件中。

    要下载完整的Dojo框架,请点击这里下载:http://download.dojotoolkit.org/release-0.3.1/dojo-0.3.1-ajax.zip

//引用以下两个dojo包  
dojo.require("dojo.style"); 
dojo.require("dojo.dnd.*"); function init(){ 
  //利用classname取到元素列表,将其注册为dojo.dnd.HtmlDragSour 
  var arr=dojo.html.getElementsByClass('divdrag') 
  for(var i=0;i<arr.length;i++){ 
   var parentDiv=arr[i].parentNode.id 
   new dojo.dnd.HtmlDragSource(arr[i],parentDiv);    
  } 
  //定义容器  
     new dojo.dnd.HtmlDropTarget("container1", ["container1","container2","container3"]);    
     new dojo.dnd.HtmlDropTarget("container2", ["container1","container2","container3"]);    
     new dojo.dnd.HtmlDropTarget("container3", ["container1","container2","container3"]);        
} 
//增加到window.onload事件中 
window.onload=function(){init();}
Javascript 相关文章推荐
TBCompressor js代码压缩
Jan 05 Javascript
javascript Window及document对象详细整理
Jan 12 Javascript
JavaScript对象和字串之间的转换实例探讨
Apr 21 Javascript
jquery中filter方法用法实例分析
Feb 06 Javascript
Jquery EasyUI实现treegrid上显示checkbox并取选定值的方法
Apr 29 Javascript
轻松掌握JavaScript享元模式
Aug 27 Javascript
关于Vue.js 2.0的Vuex 2.0 你需要更新的知识库
Nov 30 Javascript
Jquery把获取到的input值转换成json
May 15 jQuery
使用jquery+iframe做一个ajax上传效果(实例)
Aug 24 jQuery
Angular 封装并发布组件的方法示例
Apr 19 Javascript
vue-cli3.0使用及部分配置详解
Aug 29 Javascript
layui实现三级联动效果
Jul 26 Javascript
给moz-firefox下添加IE方法和属性
Apr 10 #Javascript
用javascript父窗口控制只弹出一个子窗口
Apr 10 #Javascript
javascript 控制弹出窗口
Apr 10 #Javascript
javascript应用:Iframe自适应其加载的内容高度
Apr 10 #Javascript
用javascript动态调整iframe高度的代码
Apr 10 #Javascript
Javascript下的keyCode键码值表
Apr 10 #Javascript
用javascript控制iframe滚动的代码
Apr 10 #Javascript
You might like
php下载文件源代码(强制任意文件格式下载)
2014/05/09 PHP
php实现多维数组中每个单元值(数字)翻倍的方法
2015/02/16 PHP
ThinkPHP实现更新数据实例详解(demo)
2016/06/29 PHP
php实现文章评论系统
2019/02/18 PHP
用jquery与css打造个性化的单选框和复选框
2010/10/20 Javascript
jQuery实现鼠标滑过点击事件音效试听
2015/08/31 Javascript
学习JavaScript鼠标响应事件
2015/12/25 Javascript
node模块机制与异步处理详解
2016/03/13 Javascript
关于RequireJS的简单介绍即使用方法
2016/10/20 Javascript
vue 2.0封装model组件的方法
2017/08/03 Javascript
基于Vue过渡状态实例讲解
2017/09/14 Javascript
详解layui中的树形关于取值传值问题
2018/01/16 Javascript
JS+HTML5实现获取手机验证码倒计时按钮
2018/08/08 Javascript
微信头像地址失效踩坑记附带解决方案
2019/09/23 Javascript
Angular6项目打包优化的实现方法
2019/12/15 Javascript
JavaScript代码异常监控实现过程详解
2020/02/17 Javascript
JavaScript canvas绘制折线图
2020/02/18 Javascript
使用eslint和githooks统一前端风格的技巧
2020/07/29 Javascript
Vue+Java 通过websocket实现服务器与客户端双向通信操作
2020/09/22 Javascript
关于Vue中$refs的探索浅析
2020/11/05 Javascript
[05:49]2014DOTA2TI4正赛第二日综述 昔日冠军纷纷落马 VG LGD占尽先机
2014/07/20 DOTA
基于进程内通讯的python聊天室实现方法
2015/06/28 Python
python web框架学习笔记
2016/05/03 Python
python下实现二叉堆以及堆排序的示例
2017/09/29 Python
python实现简易版计算器
2020/06/22 Python
Python学习笔记之Zip和Enumerate用法实例分析
2019/08/14 Python
解决python明明pip安装成功却找不到包的问题
2019/08/28 Python
Python3爬虫中Splash的知识总结
2020/07/10 Python
总结python 三种常见的内存泄漏场景
2020/11/20 Python
移动端HTML5实现文件上传功能【附代码】
2016/03/25 HTML / CSS
德国2018年度最佳在线药房:Bodfeld Apotheke
2019/11/04 全球购物
经营理念标语
2014/06/21 职场文书
地道战观后感2000字
2015/06/04 职场文书
P站美图推荐——变身女主角特辑
2022/03/20 日漫
DIY胆机必读:各国电子管评价
2022/04/06 无线电
nginx.conf配置文件结构小结
2022/04/08 Servers