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 相关文章推荐
Jquery通过Ajax方式来提交Form表单的具体实现
Nov 07 Javascript
JavaScript实现找质数代码分享
Mar 24 Javascript
jQuery简单实现input文本框内灰色提示文本效果的方法
Dec 02 Javascript
jQuery和hwSlider实现内容响应式可触控滑动切换效果附源码下载(二)
Jun 22 Javascript
JavaScript蒙板(model)功能的简单实现代码
Aug 04 Javascript
Javascript实现倒计时(防页面刷新)实例
Dec 13 Javascript
elementUI Tree 树形控件的官方使用文档
Apr 25 Javascript
Vue Extends 扩展选项用法完整实例
Sep 17 Javascript
jQuery高级编程之js对象、json与ajax用法实例分析
Nov 01 jQuery
小程序采集录音并上传到后台
Nov 22 Javascript
vue+echarts实现中国地图流动效果(步骤详解)
Jan 27 Vue.js
React服务端渲染原理解析与实践
Mar 04 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 购物车的例子
2009/05/04 PHP
基于PHP读取TXT文件向数据库导入海量数据的方法
2013/04/23 PHP
PHP 5.6.11 访问SQL Server2008R2的几种情况详解
2016/08/08 PHP
PHP实现导出带样式的Excel
2016/08/28 PHP
php实现的二叉树遍历算法示例
2017/06/15 PHP
php实现微信企业转账功能
2018/10/02 PHP
JavaScript Cookie显示用户上次访问的时间和次数
2009/12/08 Javascript
javascript向后台传送相同属性的参数即数组参数
2014/02/17 Javascript
javascript实现window.print()去除页眉页脚
2014/12/30 Javascript
动态加载css方法实现和深入解析
2017/01/18 Javascript
angularjs的select使用及默认选中设置
2017/04/08 Javascript
xmlplus组件设计系列之树(Tree)(9)
2017/05/02 Javascript
基于angular-utils-ui-breadcrumbs使用心得(分享)
2017/11/03 Javascript
js实现把时间戳转换为yyyy-MM-dd hh:mm 格式(es6语法)
2017/12/28 Javascript
Vue 让元素抖动/摆动起来的实现代码
2018/05/31 Javascript
Vue CLI3 如何支持less的方法示例
2018/08/29 Javascript
nodejs微信开发之授权登录+获取用户信息
2019/03/17 NodeJs
Javascript实现一朵从含苞到绽放的玫瑰
2019/03/30 Javascript
Vue Cli3 打包配置并自动忽略console.log语句的方法
2020/04/23 Javascript
javascript自定义加载loading效果
2020/09/15 Javascript
[02:57]DOTA2英雄基础教程 风行者
2014/01/16 DOTA
python高并发异步服务器核心库forkcore使用方法
2013/11/26 Python
Python简单爬虫导出CSV文件的实例讲解
2018/07/06 Python
python根据txt文本批量创建文件夹
2020/12/08 Python
安装好Pycharm后如何配置Python解释器简易教程
2019/06/28 Python
Python编译为二进制so可执行文件实例
2019/12/23 Python
HTML文本属性&amp;颜色控制属性的实现
2019/12/17 HTML / CSS
来自Ocado的宠物商店:Fetch
2018/07/10 全球购物
SIXPAD智能健身仪英国官网:革命性的训练装备品牌
2018/09/27 全球购物
OSPF有什么优点?为什么OSPF比RIP收敛快?
2013/02/13 面试题
物流仓管员岗位职责
2013/12/04 职场文书
2014年学校国庆主题活动方案
2014/09/16 职场文书
四查四看自我剖析材料
2014/09/19 职场文书
个人授权委托书范文
2014/09/21 职场文书
拾金不昧表扬稿
2015/01/16 职场文书
2015高三毕业寄语赠言
2015/02/27 职场文书