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 replace(rgExp,fn)正则替换的用法
Mar 04 Javascript
IE6/7/8中Option元素未设value时Select将获取空字符串
Apr 07 Javascript
jQuery之过滤元素操作小结
Nov 30 Javascript
JavaScript框架(iframe)操作总结
Apr 16 Javascript
javascript自动生成包含数字与字符的随机字符串
Feb 09 Javascript
JavaScript中实现Map的示例代码
Sep 09 Javascript
原生JS实现简单的倒计时功能示例
Aug 30 Javascript
详解如何用webpack4从零开始构建react开发环境
Jan 27 Javascript
Vue 动态组件与 v-once 指令的实现
Feb 12 Javascript
JS实现简单的文字无缝上下滚动功能示例
Jun 22 Javascript
浅析Vue 防抖与节流的使用
Nov 14 Javascript
Vue实现仿iPhone悬浮球的示例代码
Mar 13 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与mysql建立连接并执行SQL语句的代码
2011/07/04 PHP
php中判断数组是一维,二维,还是多维的解决方法
2013/05/04 PHP
深入理解PHP中mt_rand()随机数的安全
2017/10/12 PHP
php微信开发之谷歌测距
2018/06/14 PHP
PHP 二维array转换json的实例讲解
2018/08/21 PHP
关于document.cookie的使用javascript
2008/04/11 Javascript
jquery 循环显示div的示例代码
2013/10/18 Javascript
js调用webservice构造SOAP进行身份验证
2016/04/27 Javascript
微信小程序 JS动态修改样式的实现代码
2017/02/10 Javascript
JavaScript实现父子dom同时绑定两个点击事件,一个用捕获,一个用冒泡时执行顺序的方法
2017/03/30 Javascript
基于bootstrap实现bootstrap中文网巨幕效果
2017/05/02 Javascript
浅谈 Vue v-model指令的实现原理
2017/06/08 Javascript
解决JS内存泄露之js对象和dom对象互相引用问题
2017/06/25 Javascript
javascript如何用递归写一个简单的树形结构示例
2017/09/06 Javascript
npm 下载指定版本的组件方法
2018/05/17 Javascript
JS伪继承prototype实现方法示例
2018/06/20 Javascript
async/await优雅的错误处理方法总结
2019/01/30 Javascript
VUE组件中的 Drawer 抽屉实现代码
2019/08/06 Javascript
javascript 对象 与 prototype 原型用法实例分析
2019/11/11 Javascript
Vue表单控件数据绑定方法详解
2020/02/05 Javascript
《javascript设计模式》学习笔记四:Javascript面向对象程序设计链式调用实例分析
2020/04/07 Javascript
python 日期排序的实例代码
2019/07/11 Python
Python中的引用和拷贝实例解析
2019/11/14 Python
解决python 虚拟环境删除包无法加载的问题
2020/07/13 Python
HTML5 Blob 实现文件下载功能的示例代码
2019/11/29 HTML / CSS
原生canvas制作画图小工具的踩坑和爬坑
2020/06/09 HTML / CSS
Sixt美国租车:高端豪华车型自驾体验
2017/09/02 全球购物
斐乐美国官方网站:FILA美国
2019/03/01 全球购物
美国NBA官方商店:NBA Store
2019/04/12 全球购物
初二政治教学反思
2014/01/12 职场文书
职业生涯规划设计步骤
2014/01/12 职场文书
学雷锋先进个人事迹
2014/05/26 职场文书
中职毕业生自我鉴定范文(3篇)
2014/09/28 职场文书
领导班子四风查摆对照检查材料思想汇报
2014/10/05 职场文书
追悼词范文大全
2015/06/23 职场文书
python3实现Dijkstra算法最短路径的实现
2021/05/12 Python