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常用运算符(Operators)-javascript基础教程
Dec 14 Javascript
JS模拟面向对象全解(一、类型及传递)
Jul 13 Javascript
jquery实现鼠标拖动图片效果示例代码
Jan 09 Javascript
原生js实现模拟滚动条
Jun 15 Javascript
jquery实现叠层3D文字特效代码分享
Aug 21 Javascript
jquery.mousewheel实现整屏翻屏效果
Aug 30 Javascript
jQuery选择器用法实例详解
Dec 17 Javascript
微信小程序 仿猫眼实现实例代码
Mar 14 Javascript
vue使用vue-i18n实现国际化的实现代码
Apr 08 Javascript
vue实现div拖拽互换位置
Jul 29 Javascript
vue draggable resizable gorkys与v-chart使用与总结
Sep 05 Javascript
vue 的 solt 子组件过滤过程解析
Sep 07 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实时显示输出
2008/10/02 PHP
PHP二分查找算法示例【递归与非递归方法】
2016/09/29 PHP
PHP中Laravel 关联查询返回错误id的解决方法
2017/04/01 PHP
浅析PHP数据导出知识点
2018/02/17 PHP
HTML页面如何象ASP一样接受参数
2007/02/07 Javascript
关于javascript document.createDocumentFragment()
2009/04/04 Javascript
jquery中实现标签切换效果的代码
2011/03/01 Javascript
js实现无需数据库的县级以上联动行政区域下拉控件
2013/08/14 Javascript
js+div实现图片滚动效果代码
2014/02/10 Javascript
javascript运动详解
2015/07/06 Javascript
js实现正则匹配中文标点符号的方法
2015/12/23 Javascript
在JavaScript中对HTML进行反转义详解
2016/05/18 Javascript
又一款MVVM组件 构建自己的Vue组件(2)
2017/03/13 Javascript
JavaScript数据类型和变量_动力节点Java学院整理
2017/06/26 Javascript
jQuery实现table中两列CheckBox只能选中一个的示例
2017/09/22 jQuery
《javascript少儿编程》location术语总结
2018/05/27 Javascript
react native基于FlatList下拉刷新上拉加载实现代码示例
2018/09/30 Javascript
Python中apply函数的用法实例教程
2014/07/31 Python
删除DataFrame中值全为NaN或者包含有NaN的列或行方法
2018/11/06 Python
Python基础之文件读取的讲解
2019/02/16 Python
python装饰器简介---这一篇也许就够了(推荐)
2019/04/01 Python
详解Python中字符串前“b”,“r”,“u”,“f”的作用
2019/12/18 Python
Python socket服务常用操作代码实例
2020/06/22 Python
Python发送邮件实现基础解析
2020/08/14 Python
python如何爬取动态网站
2020/09/09 Python
Python离线安装各种库及pip的方法
2020/11/28 Python
windows系统Tensorflow2.x简单安装记录(图文)
2021/01/18 Python
La Redoute英国官网:法国时尚品牌
2017/04/27 全球购物
eDreams意大利:南欧领先的在线旅行社
2018/11/23 全球购物
PHP中如何使用Cookie
2015/10/28 面试题
儿童生日会策划方案
2014/05/15 职场文书
幼儿园大班个人总结
2015/02/28 职场文书
好人好事新闻稿
2015/07/17 职场文书
CSS文本阴影 text-shadow 悬停效果详解
2022/05/25 HTML / CSS
windows10 家庭版下FTP服务器搭建教程
2022/08/05 Servers