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 06 Javascript
jQuery头像裁剪工具jcrop用法实例(附演示与demo源码下载)
Jan 22 Javascript
jQuery图片左右滚动代码 有左右按钮实例
Jun 20 Javascript
BootStrap实现响应式布局导航栏折叠隐藏效果(在小屏幕、手机屏幕浏览时自动折叠隐藏)
Nov 30 Javascript
AngularJS打开页面隐藏显示表达式用法示例
Dec 25 Javascript
vue学习笔记之v-if和v-show的区别
Sep 20 Javascript
ReactNative实现Toast的示例
Dec 31 Javascript
vue移动端项目缓存问题实践记录
Oct 29 Javascript
node.js爬取中关村的在线电瓶车信息
Nov 13 Javascript
详解vue移动端项目代码拆分记录
Mar 15 Javascript
JavaScript 俄罗斯方块游戏实现方法与代码解释
Apr 08 Javascript
JavaScript实现Tab标签页切换的最简便方式(4种)
Jun 28 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提交表单时判断 if($_POST[submit])与 if(isset($_POST[submit])) 的区别
2011/02/08 PHP
ThinkPHP3.2.2的插件控制器功能简述
2014/07/09 PHP
浅谈php函数serialize()与unserialize()的使用方法
2014/08/19 PHP
使用Zttp简化Guzzle 调用
2017/07/02 PHP
疯狂Jquery第一天(Jquery学习笔记)
2012/05/11 Javascript
关于onchange事件在IE和FF下的表现及解决方法
2014/03/08 Javascript
ie 7/8不支持trim的属性的解决方案
2014/05/23 Javascript
基于jQuery.Hz2Py.js插件实现的汉字转拼音特效
2015/05/07 Javascript
js传值后台中文出现乱码的解决方法
2016/06/30 Javascript
JavaScript中removeChild 方法开发示例代码
2016/08/15 Javascript
jQuery通过改变input的type属性实现密码显示隐藏切换功能
2017/02/08 Javascript
JS基于面向对象实现的多个倒计时器功能示例
2017/02/28 Javascript
js读取json文件片段中的数据实例
2017/03/09 Javascript
基于VUE移动音乐WEBAPP跨域请求失败的解决方法
2018/01/16 Javascript
jQuery事件blur()方法的使用实例讲解
2019/03/30 jQuery
微信小程序批量监听输入框对按钮样式进行控制的实现代码
2019/10/12 Javascript
javascript Canvas动态粒子连线
2020/01/01 Javascript
JS数组方法join()用法实例分析
2020/01/18 Javascript
Vue通过getAction的finally来最大程度避免影响主数据呈现问题
2020/04/24 Javascript
Python3写入文件常用方法实例分析
2015/05/22 Python
Python callable()函数用法实例分析
2018/03/17 Python
Python自定义装饰器原理与用法实例分析
2018/07/16 Python
python发送告警邮件脚本
2018/09/17 Python
浅谈django的render函数的参数问题
2018/10/16 Python
Python3实现定时任务的四种方式
2019/06/03 Python
python+selenium 鼠标事件操作方法
2019/08/24 Python
pandas中遍历dataframe的每一个元素的实现
2019/10/23 Python
解决pytorch报错:AssertionError: Invalid device id的问题
2020/01/10 Python
Python Matplotlib绘图基础知识代码解析
2020/08/31 Python
英国足球店:UK Soccer Shop
2017/11/19 全球购物
香奈儿美国官网:CHANEL美国
2020/05/20 全球购物
局部内部类是否可以访问非final变量?
2013/04/20 面试题
Servlet的生命周期
2013/08/25 面试题
高中生的自我评价
2014/03/04 职场文书
群众路线教育实践活动方案
2014/10/31 职场文书
个人汇报材料范文
2014/12/30 职场文书