jQuery动态添加可拖动元素完整实例(附demo源码下载)


Posted in Javascript onJune 21, 2016

本文实例讲述了jQuery动态添加可拖动元素的方法。分享给大家供大家参考,具体如下:

运行效果截图如下:

jQuery动态添加可拖动元素完整实例(附demo源码下载)

具体代码如下:

index.html:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>流程设计器</title>
<script type = "text/javascript" src = "jquery-1.7.2.min.js"> </script>
<script type = "text/javascript" src="drag.js"></script>
<link type = "text/css" href = "ProcessDesigner.css" rel="stylesheet"></link>
</head>
<body>
 <div id = "console">
  <div id = "menubar">
  <input type = "button" value = "添加节点" hidefocus = "true" id = "addItem"/>
  </div>
  <div id = "nodesContainer"></div>
 </div>
</body>
</html>

ProcessDesigner.css:

body {
 padding:0;
 margin:0
}
#console{
 width:500px;
 height:300px;
 background:#eee;
 margin:10px auto;
 border:5px solid #000;
}
#menubar{
 width:100%;
 height:30px;
 background:#333;
 line-height:30px;
 vertical-align:middle;
}
#addItem{
 wdith:50px;
 height:20px;
 color:#fff;
 background:#555;
 border:0;
 line-height:20px;
 margin-left:5px;
 border-radius:5px;
 _margin-top:4px;
}
#nodesContainer{
 width:100%;
 height:270px;
 background:#eee;
}

drag.js:

/**
 * @author Administrator
 */
$(function(){
 $("#addItem").click(function(){
 var obj = document.getElementById("nodesContainer");
 createNode(obj);
 })
})
function createNode(parentNode){
 var left = document.getElementById("nodesContainer").offsetLeft+10;
 var top = document.getElementById("nodesContainer").offsetTop+10;
 var newNode = document.createElement("div");
 newNode.style.position = "absolute";
 newNode.style.width = "20px";
 newNode.style.height = "20px";
 newNode.style.top = top+"px";
 newNode.style.left = left+"px";
 newNode.style.borderRadius = "50px";
 newNode.style.background = "blue";
 parentNode.appendChild(newNode);
 doDrag(newNode);
}
/*
 * @param {Object} obj: If obj is a string,convert it to an obj;
 * @param {number} initWidth: Initial Width of obj;
 * @param {number} initHeight:Initial Height of obj;
 * @param {number} initLeft:Initial Left of obj;
 * @param {number} initTop:Initial Top of obj;
 */
function doDrag(obj, initWidth, initHeight, initLeft, initTop){
  var posX;
  var posY;
  var dragable;
  if (typeof obj == "string")
    obj = document.getElementById(obj);
  if(initWidth)obj.style.width = initWidth + "px";
  if(initHeight)obj.style.height = initHeight + "px";
  if(initLeft)obj.style.left = initLeft + "px";
  if(initTop)obj.style.top = initTop + "px";
  obj.onmousedown = function(event){
    down(event);
  }
  obj.onmouseup = function(){
    up();
  }
  function down(e){
    e = e || window.event;
    posX = e.clientX - obj.offsetLeft; //offsetLeft is a readonly property
    posY = e.clientY - obj.offsetTop;
    dragable = true;
    document.onmousemove = move;
 //$(obj).wrap("<div style = 'position:relative;border:1px solid red;width:300px;height:50px'></div>")
  }
  function move(ev){
    if (dragable) {
      ev = ev || window.event;//如果是IE
      obj.style.left = (ev.clientX - posX) + "px";
      obj.style.top = (ev.clientY - posY) + "px";
    }
  }
  function up(){
 //$(obj).unwrap();
    dragable = false;
  };
}

完整实例代码点击此处本站下载。

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

Javascript 相关文章推荐
javascript 动态添加表格行
Jun 22 Javascript
基于jquery的动态创建表格的插件
Apr 05 Javascript
Jquery注册事件实现方法
May 18 Javascript
javascript实现列表滚动的方法
Jul 30 Javascript
javascript实现C语言经典程序题
Nov 29 Javascript
基于jQuery实现仿百度首页选项卡切换效果
May 29 Javascript
Bootstrap3制作搜索框样式的方法
Jul 11 Javascript
JavaScript实现256色转灰度图
Feb 22 Javascript
微信小程序 开发之滑块视图容器(swiper)详解及实例代码
Feb 22 Javascript
Node.js应用设置安全的沙箱环境
Apr 23 Javascript
Vue实现固定定位图标滑动隐藏效果
May 30 Javascript
vue将data恢复到初始状态 &amp;&amp; 重新渲染组件实例
Sep 04 Javascript
带有定位当前位置的百度地图前端web api实例代码
Jun 21 #Javascript
jQuery中的ready函数与window.onload谁先执行
Jun 21 #Javascript
纯JS前端实现分页代码
Jun 21 #Javascript
jQuery AJAX timeout 超时问题详解
Jun 21 #Javascript
jQuery代码性能优化的10种方法
Jun 21 #Javascript
JS实现兼容各种浏览器的获取选择文本的方法【测试可用】
Jun 21 #Javascript
JS实现兼容各种浏览器的高级拖动方法完整实例【测试可用】
Jun 21 #Javascript
You might like
用php实现的下载css文件中的图片的代码
2010/02/08 PHP
PHP图片处理之图片旋转和图片翻转实例
2014/11/19 PHP
thinkphp使用phpmailer发送邮件的方法
2014/11/24 PHP
Zend Framework教程之MVC框架的Controller用法分析
2016/03/07 PHP
/etc/php-fpm.d/www.conf 配置注意事项
2017/02/04 PHP
laravel框架实现敏感词汇过滤功能示例
2020/02/15 PHP
一段多浏览器的&quot;复制到剪贴板&quot;javascript代码
2007/03/27 Javascript
node.js中的fs.utimesSync方法使用说明
2014/12/15 Javascript
jQuery检测返回值的数据类型
2015/07/13 Javascript
使用 stylelint检查CSS_StyleLint
2016/04/28 Javascript
Bootstrap分页插件之Bootstrap Paginator实例详解
2016/10/15 Javascript
Bootstrap Tooltip显示换行和左对齐的解决方案
2017/10/11 Javascript
AngularJS基于MVC的复杂操作实例讲解
2017/12/31 Javascript
利用SpringMVC过滤器解决vue跨域请求的问题
2018/02/10 Javascript
浅谈node中的cluster集群
2018/06/02 Javascript
微信小程序首页的分类功能和搜索功能的实现思路及代码详解
2018/09/11 Javascript
Nuxt.js 数据双向绑定的实现
2019/02/17 Javascript
JavaScript面向对象程序设计中对象的定义和继承详解
2019/07/29 Javascript
详解微信小程序入门从这里出发(登录注册、开发工具、文件及结构介绍)
2020/07/21 Javascript
[01:31:22]Ti4 循环赛第四日附加赛LGD vs Mouz
2014/07/13 DOTA
centos系统升级python 2.7.3
2014/07/03 Python
Python中使用OpenCV库来进行简单的气象学遥感影像计算
2016/02/19 Python
python对配置文件.ini进行增删改查操作的方法示例
2017/07/28 Python
Python3.5实现的罗马数字转换成整数功能示例
2019/02/25 Python
Python (Win)readline和tab补全的安装方法
2019/08/27 Python
python+pygame实现坦克大战
2019/09/10 Python
详解pyinstaller selenium python3 chrome打包问题
2019/10/18 Python
美国马匹用品和马钉购物网站:State Line Tack
2018/08/05 全球购物
巴西手表购物网站:eclock
2019/03/19 全球购物
美国艺术和工艺品商店:Hobby Lobby
2020/12/09 全球购物
在校大学生的职业生涯规划书
2014/03/14 职场文书
学校四群教育实施方案
2014/06/12 职场文书
离婚协议书范本
2015/01/26 职场文书
2015年入党积极分子评语
2015/03/26 职场文书
基层组织建设年活动总结
2015/05/09 职场文书
React列表栏及购物车组件使用详解
2021/06/28 Javascript