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模拟实现Array的sort方法
Dec 11 Javascript
javascript call和apply方法
Nov 24 Javascript
深入Javascript函数、递归与闭包(执行环境、变量对象与作用域链)使用详解
May 08 Javascript
form.submit()不能提交表单的原因分析
Oct 23 Javascript
javascript实现设置、获取和删除Cookie的方法
Jun 01 Javascript
VUE axios发送跨域请求需要注意的问题
Jul 06 Javascript
详解用Node.js写一个简单的命令行工具
Mar 01 Javascript
在ES5与ES6环境下处理函数默认参数的实现方法
May 13 Javascript
微信小程序实现分享朋友圈的图片功能示例
Jan 18 Javascript
javascript网页随机点名实现过程解析
Oct 15 Javascript
解决vue组件销毁之后计时器继续执行的问题
Jul 21 Javascript
vue实现登陆页面开发实践
May 30 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
php adodb连接mssql解决乱码问题
2009/06/12 PHP
PHP 绘制网站登录首页图片验证码
2016/04/12 PHP
laravel框架数据库操作、查询构建器、Eloquent ORM操作实例分析
2019/12/20 PHP
formValidator3.3的ajaxValidator一些异常分析
2011/07/12 Javascript
UpdatePanel和Jquery冲突的解决方法
2013/04/01 Javascript
jquery鼠标停止移动事件
2013/12/21 Javascript
jQuery formValidator表单验证
2016/01/07 Javascript
基于BootStrap Metronic开发框架经验小结【二】列表分页处理和插件JSTree的使用
2016/05/12 Javascript
jquery的checkbox,radio,select等方法小结
2016/08/30 Javascript
require.js+vue开发微信上传图片组件
2016/10/27 Javascript
Angular实现一个简单的多选复选框的弹出框指令实例
2017/04/25 Javascript
详解nodeJs文件系统(fs)与流(stream)
2018/01/24 NodeJs
vue插件开发之使用pdf.js实现手机端在线预览pdf文档的方法
2018/07/12 Javascript
webuploader分片上传的实现代码(前后端分离)
2018/09/10 Javascript
微信小程序实现下拉刷新动画
2019/06/21 Javascript
Vue+Vuex实现自动登录的知识点详解
2020/03/04 Javascript
[05:06]2017亚洲邀请赛DAC回顾片
2017/04/19 DOTA
Python元组拆包和具名元组解析实例详解
2018/03/26 Python
利用python如何处理百万条数据(适用java新手)
2018/06/06 Python
Python实现的栈、队列、文件目录遍历操作示例
2019/05/06 Python
Python列表(list)所有元素的同一操作解析
2019/08/01 Python
Python属性和内建属性实例解析
2020/01/14 Python
Python Tkinter图形工具使用方法及实例解析
2020/06/15 Python
比利时香水网上商店:NOTINO
2018/03/28 全球购物
澳大利亚手表品牌:Time IV Change
2018/10/06 全球购物
美术专业学生个人自我评价
2013/09/19 职场文书
大一期末自我鉴定
2013/12/13 职场文书
酒店总经理欢迎词
2014/01/15 职场文书
2014年端午节演讲稿范文
2014/05/23 职场文书
2014年团员学习十八大思想汇报
2014/09/13 职场文书
警告通知
2015/04/25 职场文书
2015年信息技术教研组工作总结
2015/07/22 职场文书
2015年小学实验室工作总结
2015/07/28 职场文书
教师节感想
2015/08/11 职场文书
Django一小时写出账号密码管理系统
2021/04/29 Python
python数字图像处理:图像的绘制
2022/06/28 Python