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 相关文章推荐
关于query Javascript CSS Selector engine
Apr 12 Javascript
JS实现随机化快速排序的实例代码
Aug 01 Javascript
jquery中页面Ajax方法$.load的功能使用介绍
Oct 20 Javascript
node.js中的events.EventEmitter.listenerCount方法使用说明
Dec 08 Javascript
JS在Chrome浏览器中showModalDialog函数返回值为undefined的解决方法
Aug 03 Javascript
JS实现电商放大镜效果
Aug 24 Javascript
jquery 获取索引值在一定范围的列表方法
Jan 25 jQuery
基于vue展开收起动画的示例代码
Jul 05 Javascript
webpack4 + react 搭建多页面应用示例
Aug 03 Javascript
修改layui的后台模板的左侧导航栏可以伸缩的方法
Sep 10 Javascript
VUE实时监听元素距离顶部高度的操作
Jul 29 Javascript
vue操作dom元素的3种方法示例
Sep 20 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
如何开发一个虚拟域名系统
2006/10/09 PHP
php中定义网站根目录的常用方法
2010/08/08 PHP
基于header的一些常用指令详解
2013/06/06 PHP
php获取文件大小的方法
2014/02/26 PHP
详解PHP中的Traits
2015/07/29 PHP
Laravel5.1数据库连接、创建数据库、创建model及创建控制器的方法
2016/03/29 PHP
Yii2框架实现注册和登录教程
2016/09/30 PHP
php实现图片以base64显示的方法
2016/10/13 PHP
javascript实现的鼠标链接提示效果生成器代码
2007/06/28 Javascript
JS 模态对话框和非模态对话框操作技巧汇总
2013/04/15 Javascript
如何将一个String和多个String值进行比较思路分析
2013/04/22 Javascript
Javascript 修改String 对象 增加去除空格功能(示例代码)
2013/11/30 Javascript
jQuery找出网页上最高元素的方法
2015/03/20 Javascript
jquery实现动态改变div宽度和高度
2015/05/08 Javascript
微信小程序之裁剪图片成圆形的实现代码
2018/10/11 Javascript
详解Vue实战指南之依赖注入(provide/inject)
2018/11/13 Javascript
layui将table转化表单显示的方法(即table.render转为表单展示)
2019/09/24 Javascript
jQuery加PHP实现图片上传并提交的示例代码
2020/07/16 jQuery
vue 通过 Prop 向子组件传递数据的实现方法
2020/10/30 Javascript
[49:58]完美世界DOTA2联赛PWL S3 Magma vs DLG 第一场 12.18
2020/12/19 DOTA
python pandas中DataFrame类型数据操作函数的方法
2018/04/08 Python
Django 跨域请求处理的示例代码
2018/05/02 Python
Django中间件拦截未登录url实例详解
2019/09/03 Python
django formset实现数据表的批量操作的示例代码
2019/12/06 Python
Django中ORM的基本使用教程
2020/12/22 Python
设计师家具购买和委托在线市场:Viyet
2016/11/16 全球购物
澳大利亚当地最大的时装生产商:Cue
2018/08/06 全球购物
Myprotein西班牙官网:欧洲第一大运动营养品牌
2020/02/24 全球购物
软件测试面试题
2015/10/21 面试题
中间件分为哪几类
2012/03/14 面试题
大学专科生推荐信范文
2013/11/23 职场文书
技校生自我鉴定
2013/12/08 职场文书
养殖人员的创业计划书范文
2013/12/26 职场文书
党员批评与自我批评
2014/02/12 职场文书
土建工程师岗位职责
2014/06/10 职场文书
2016大学生求职自荐信范文
2016/01/28 职场文书