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入门教程(12) js对象化编程
Jan 31 Javascript
JavaScript 对象模型 执行模型
Dec 06 Javascript
用javascript判断IE版本号简单实用且向后兼容
Sep 11 Javascript
javascript日期格式化示例分享
Mar 05 Javascript
jQuery实现“扫码阅读”功能
Jan 21 Javascript
JavaScript 变量、作用域及内存
Apr 08 Javascript
深入理解vue-loader如何使用
Jun 06 Javascript
JS逻辑运算符短路操作实例分析
Jul 09 Javascript
浅谈Vue组件及组件的注册方法
Aug 24 Javascript
详解Vue2 添加对scss的支持
Jan 02 Javascript
JavaScript 几种循环方式以及模块化的总结
Sep 03 Javascript
JavaScript圣杯布局与双飞翼布局实现案例详解
Aug 05 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新手上路(十二)
2006/10/09 PHP
PHP关联数组的10个操作技巧
2013/01/21 PHP
如何用php获取程序执行的时间
2013/06/09 PHP
PHP文件操作实例总结【文件上传、下载、分页】
2018/12/08 PHP
php定期拉取数据对比方法实例
2019/09/22 PHP
Js+XML 操作
2006/09/20 Javascript
js正文内容高亮效果的实现方法
2013/06/30 Javascript
利用JS屏蔽页面中的Enter按键提交表单的方法
2016/11/25 Javascript
基于JavaScript实现购物车功能
2017/02/07 Javascript
使用Bootstrap + Vue.js实现添加删除数据示例
2017/02/27 Javascript
微信小程序中子页面向父页面传值实例详解
2017/03/20 Javascript
Angular搜索场景中使用rxjs的操作符处理思路
2018/05/30 Javascript
详解从react转职到vue开发的项目准备
2019/01/14 Javascript
微信小程序实现元素渐入渐出动画效果封装方法
2019/05/18 Javascript
js删除对象中的某一个字段的方法实现
2021/01/11 Javascript
在Python的循环体中使用else语句的方法
2015/03/30 Python
Python 实现购物商城,含有用户入口和商家入口的示例
2017/09/15 Python
基于python实现聊天室程序
2018/07/27 Python
Python openpyxl 遍历所有sheet 查找特定字符串的方法
2018/12/10 Python
django 外键model的互相读取方法
2018/12/15 Python
对python中大文件的导入与导出方法详解
2018/12/28 Python
django框架基于模板 生成 excel(xls) 文件操作示例
2019/06/19 Python
如何通过50行Python代码获取公众号全部文章
2019/07/12 Python
python实现的爬取电影下载链接功能示例
2019/08/26 Python
Python3 翻转二叉树的实现
2019/09/30 Python
python操作yaml说明
2020/04/08 Python
python Socket网络编程实现C/S模式和P2P
2020/06/22 Python
Python使用pyenv实现多环境管理
2021/02/05 Python
CSS实现聊天气泡效果
2020/04/26 HTML / CSS
adidas瑞典官方网站:购买阿迪达斯鞋子和运动服
2019/12/11 全球购物
MIRTA官网:手工包,100%意大利制造
2020/02/11 全球购物
2014年综治维稳工作总结
2014/11/17 职场文书
承兑汇票转让证明怎么写?
2014/11/30 职场文书
雨花台导游词
2015/02/06 职场文书
民主评议教师党员自我评价
2015/03/04 职场文书
2015年效能监察工作总结
2015/04/23 职场文书