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 相关文章推荐
JS实现闪动的title消息提醒效果
Jun 20 Javascript
jQuery.position()方法获取不到值的安全替换方法
Mar 13 Javascript
轻松学习jQuery插件EasyUI EasyUI实现拖放商品放置购物车
Nov 30 Javascript
javascript实现消灭星星小游戏简单版
Nov 15 Javascript
JS利用cookies设置每隔24小时弹出框
Apr 20 Javascript
JS实现简单抖动效果
Jun 01 Javascript
AngularJS 教程及实例代码
Oct 23 Javascript
JS实现的点击按钮图片上下滚动效果示例
Jan 28 Javascript
JS使用对象的defineProperty进行变量监控操作示例
Feb 02 Javascript
前端Electron新手入门教程详解
Jun 21 Javascript
javascript实现智能手环时间显示
Sep 18 Javascript
基于vue+echarts数据可视化大屏展示的实现
Dec 25 Vue.js
带有定位当前位置的百度地图前端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
谏山创故乡大分县日田市水坝将设立《进击的巨人》立艾伦、三笠以及阿尔敏的铜像!
2020/03/06 日漫
2014最热门的24个php类库汇总
2014/12/18 PHP
php获取字符串中各个字符出现次数的方法
2015/02/23 PHP
PHP中的print_r 与 var_dump 输出数组
2016/06/13 PHP
php学习笔记之mb_strstr的基本使用
2018/02/03 PHP
PHP常用字符串函数小结(推荐)
2018/08/05 PHP
javascript时间自动刷新实现原理与步骤
2013/01/06 Javascript
将json对象转换为字符串的方法
2014/02/20 Javascript
JQuery 使用attr方法实现下拉列表选中
2014/10/13 Javascript
学习JavaScript设计模式之装饰者模式
2016/01/19 Javascript
jQuery与Ajax以及序列化
2016/02/01 Javascript
同步异步动态引入js文件的几种方法总结
2016/09/23 Javascript
JavaScript正则表达式实例详解
2016/10/16 Javascript
详解nodejs微信公众号开发——6.自定义菜单
2017/04/13 NodeJs
利用Angular.js编写公共提示模块的方法教程
2017/05/28 Javascript
使用Webpack提高Vue.js应用的方式汇总(四种)
2017/07/10 Javascript
react-native 封装选择弹出框示例(试用ios&amp;android)
2017/07/11 Javascript
vue中的模态对话框组件实现过程
2018/05/01 Javascript
简单的Python的curses库使用教程
2015/04/11 Python
Python中用于计算对数的log()方法
2015/05/15 Python
python机器学习理论与实战(五)支持向量机
2018/01/19 Python
使用Filter过滤python中的日志输出的实现方法
2019/07/17 Python
Django框架中序列化和反序列化的例子
2019/08/06 Python
python pyenv多版本管理工具的使用
2019/12/23 Python
python sitk.show()与imageJ结合使用常见的问题
2020/04/20 Python
Python+Kepler.gl实现时间轮播地图过程解析
2020/07/20 Python
HTML5 visibilityState属性详细介绍和使用实例
2014/05/03 HTML / CSS
大学生毕业自我鉴定范文
2014/02/03 职场文书
银行求职信范文
2014/05/26 职场文书
责任书格式范文
2014/07/28 职场文书
副检察长四风问题对照检查材料思想汇报
2014/10/07 职场文书
新郎答谢词
2015/01/04 职场文书
幼儿园中班教师个人工作总结
2015/02/06 职场文书
党支部创先争优公开承诺书
2015/04/30 职场文书
一个成功的互联网创业项目,必须满足这些要求
2019/08/23 职场文书
详解SQL报错盲注
2022/07/23 SQL Server