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的Boolean对象初始值示例
Mar 04 Javascript
常见的jQuery选择器汇总
Nov 24 Javascript
JavaScript第一篇之实现按钮全选、功能
Aug 21 Javascript
手机图片预览插件photoswipe.js使用总结
Aug 25 Javascript
Bootstrap轮播插件使用代码
Oct 11 Javascript
bootstrap laydate日期组件使用详解
Jan 04 Javascript
详解jquery validate实现表单验证 (正则表达式)
Jan 18 Javascript
使用bootstrap-paginator.js 分页来进行ajax 异步分页请求示例
Mar 09 Javascript
Avalonjs双向数据绑定与监听的实例代码
Jun 23 Javascript
jquery.uploadView 实现图片预览上传功能
Aug 10 jQuery
jquery实现联想词搜索框和搜索结果分页的示例
Oct 10 jQuery
微信小程序实现复选框效果
Dec 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
Sony CFR 320 修复改造
2020/03/14 无线电
COM in PHP (winows only)
2006/10/09 PHP
PHP静态调用非静态方法的应用分析
2013/05/02 PHP
php简单统计字符串单词数量的方法
2015/06/19 PHP
PHP chunk_split()函数讲解
2019/02/12 PHP
PHP中遍历数组的三种常用方法实例分析
2019/06/24 PHP
textarea的value是html文件源代码,存成html文件的代码
2007/04/20 Javascript
符合标准的js表单提交的代码
2007/09/13 Javascript
jQuery技巧大放送 学习jquery的朋友可以看下
2009/10/14 Javascript
JavaScript打印iframe内容示例代码
2013/08/20 Javascript
Firefox中通过JavaScript复制数据到剪贴板(Copy to Clipboard 跨浏览器版)
2013/11/22 Javascript
JavaScript数组常用方法
2015/03/02 Javascript
使用console进行性能测试
2015/04/27 Javascript
js注入 黑客之路必备!
2016/09/14 Javascript
使用Webpack提高Vue.js应用的方式汇总(四种)
2017/07/10 Javascript
pm2发布node配置文件ecosystem.json详解
2019/05/15 Javascript
nodejs二进制与Buffer的介绍与使用
2019/07/11 NodeJs
js+canvas实现五子棋小游戏
2020/08/02 Javascript
[01:05:24]Ti4 冒泡赛第二天 iG vs NEWBEE 3
2014/07/15 DOTA
让python在hadoop上跑起来
2016/01/27 Python
利用Python自动监控网站并发送邮件告警的方法
2016/08/24 Python
批量获取及验证HTTP代理的Python脚本
2017/04/23 Python
Python书单 不将就
2017/07/11 Python
使用python为mysql实现restful接口
2018/01/05 Python
python解析xml文件方式(解析、更新、写入)
2020/03/05 Python
Ubuntu配置Pytorch on Graph (PoG)环境过程图解
2020/11/19 Python
京东全球售:直邮香港,澳门,台湾,美国,澳大利亚等地区
2017/09/24 全球购物
linux面试相关问题
2013/04/28 面试题
《假如》教学反思
2014/04/17 职场文书
中等生评语大全
2014/05/04 职场文书
公司法人授权委托书范本
2014/09/12 职场文书
销售会议开幕词
2015/01/28 职场文书
个人委托书范文
2015/01/28 职场文书
导游词之金鞭溪风景区
2019/09/12 职场文书
详解Node.js如何处理ES6模块
2021/05/15 Javascript
MySQL事务的隔离级别详情
2022/07/15 MySQL