EasyUI-draggable
draggable用来在界面上创建一个可以拖动的元素,既然是可以拖动的元素,那么它在拖动过程中会有下面的几个事件:onBeforeDrag、onStartDrag、onDrag、onStopDrag。
创建一个拖动元素一般需要两个部分:一个包装层,用来保存在拖动过程的内容;另外一个,是拖动的对象,相当于是水桶把。下面的示例中,拖动#title来改变#db的位置。
<body>
<div id="db" style="width: 100px;">
<p id="title" style="background: #ccc;">
draggable</p>
<p id="P1">
1111111111</p>
<p id="P2">
2222222222</p>
<p id="P3">
3333333333</p>
</div>
<script type="text/javascript">
$(document).ready(function () {
$('#db').draggable({
handle: '#title'
});
});
</script>
</body>

另外,也可以不指定handle属性,那么整个#db都是拖动的。
基本属性
1.handle
拖动元素中,用于拖动的部分。
2.axis
控制拖动方向,如果不指定,那么可以任意拖动。通过, 'v' 或 'h',这两个值,来指定水平或垂直方向上的拖动。
3.cursor
用来指定拖动时,光标的样式,默认是:move
4.revert
如果这个属性值是ture,那么拖动松开后,拖动元素会回到起点。
5.proxy
通过赋值“clone”,拖动时,会创建一个副本。
拖拽限制
<body>
<div style="position: relative; overflow: hidden; border: 1px solid #ccc; width: 500px; height: 300px">
<div id="db" style="width: 100px; height: 100px; background: #fafafa; border: 1px solid #ccc;">
</div>
</div>
<script type="text/javascript">
$(document).ready(function () {
$('#db').draggable({
onDrag: function (e) {
var d = e.data;
if (d.left < 0) {
d.left = 0;
}
if (d.top < 0) {
d.top = 0;
}
if (d.left + $(d.target).outerWidth() > $(d.parent).width()) {
d.left = $(d.parent).width() - $(d.target).outerWidth();
}
if (d.top + $(d.target).outerHeight() > $(d.parent).height()) {
d.top = $(d.parent).height() - $(d.target).outerHeight();
}
}
});
});
</script>
</body>
通过在拖拽事件中获取db和外部层,然后限制top和left。下面在调试中,输出e.data的值。

学校课程表

下面代码运行有个bug,有时拖动结束了,这个元素失去了再次拖动的能力。
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>EasyUI</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8;" />
<link href="easyui/themes/default/easyui.css" rel="stylesheet" type="text/css" />
<link href="easyui/themes/icon.css" rel="stylesheet" type="text/css" />
<script src="easyui/jquery-1.8.0.min.js" type="text/javascript"></script>
<script src="easyui/jquery.easyui.min.js" type="text/javascript"></script>
<script src="easyui/locale/easyui-lang-zh_CN.js" type="text/javascript"></script>
<style type="text/css">
.left{width: 120px;float: left;}
.left table{background: #E0ECFF;}
.left td{background: #eee;}
.right{float: right;width: 570px;}
.right table{width: 100%;}
.right td{background: #E0ECFF;color: #444;text-align: center;padding: 2px;width: 100px;}
.right td.drop{background: #fafafa;width: 100px;}
.right td.over{background: #FBEC88;width: 100px;}
.item{text-align: center;border: 1px solid #499B33;background: #fafafa;color: #444;width: 100px;}
.assigned{border: 1px solid #BC2A4D;}
</style>
</head>
<body>
<div style="width: 800px;">
<div class="left">
<table>
<tr>
<td>
<div class="item">英语</div>
</td>
</tr>
<tr>
<td>
<div class="item">科学</div>
</td>
</tr>
<tr>
<td>
<div class="item">音乐</div>
</td>
</tr>
<tr>
<td>
<div class="item">历史</div>
</td>
</tr>
<tr>
<td>
<div class="item">计算机</div>
</td>
</tr>
<tr>
<td>
<div class="item">数学</div>
</td>
</tr>
<tr>
<td>
<div class="item">艺术</div>
</td>
</tr>
<tr>
<td>
<div class="item">伦理学</div>
</td>
</tr>
</table>
</div>
<div class="right">
<table>
<tr>
<td></td>
<td>星期一</td>
<td>星期二</td>
<td>星期三</td>
<td>星期四</td>
<td>星期五</td>
</tr>
<tr>
<td>08:00</td>
<td class="drop"></td>
<td class="drop"></td>
<td class="drop"></td>
<td class="drop"></td>
<td class="drop"></td>
</tr>
<tr>
<td>09:00</td>
<td class="drop"></td>
<td class="drop"></td>
<td class="drop"></td>
<td class="drop"></td>
<td class="drop"></td>
</tr>
<tr>
<td>10:00</td>
<td class="drop"></td>
<td class="drop"></td>
<td class="drop"></td>
<td class="drop"></td>
<td class="drop"></td>
</tr>
<tr>
<td>11:00</td>
<td class="drop"></td>
<td class="drop"></td>
<td class="drop"></td>
<td class="drop"></td>
<td class="drop"></td>
</tr>
<tr>
<td>12:00</td>
<td class="drop"></td>
<td class="drop"></td>
<td class="drop"></td>
<td class="drop"></td>
<td class="drop"></td>
</tr>
<tr>
<td>13:00
</td>
<td colspan="5">午餐时间
</td>
</tr>
<tr>
<td>14:00</td>
<td class="drop"></td>
<td class="drop"></td>
<td class="drop"></td>
<td class="drop"></td>
<td class="drop"></td>
</tr>
<tr>
<td>15:00</td>
<td class="drop"></td>
<td class="drop"></td>
<td class="drop"></td>
<td class="drop"></td>
<td class="drop"></td>
</tr>
<tr>
<td>16:00</td>
<td class="drop"></td>
<td class="drop"></td>
<td class="drop"></td>
<td class="drop"></td>
<td class="drop"></td>
</tr>
</table>
</div>
</div>
<script type="text/javascript">
$(function () {
$('.left .item').draggable({
revert: true,
proxy: 'clone'
});
//可拽入容器
$('.right td.drop').droppable({
onDragEnter: function () {
$(this).addClass('over');
},
onDragLeave: function () {
$(this).removeClass('over');
},
onDrop: function (e, source) {
$(this).removeClass('over');
if ($(source).hasClass('assigned')) {
//如果有红色的边框,表示是已经在课表中的课程
$(this).empty().append(source);
} else {
//没有红色边框,是从左侧源中拖出的,要创建一个副本
var c = $(source).clone().addClass('assigned');
$(this).empty().append(c);
//这个副本也是可以拖动的
c.draggable({
revert: true,
onStopDrag: function (e) {
//停止拖动的时候,如果在表格之外,则删除这个对象
var d = e.data;
var thisF = d.left;
var thisT = d.top;
var tableF = $(".right table").offset().left;
var tableW = $(".right table").width();
var tableT = $(".right table").offset().top;
var tableH = $(".right table").height();
if (thisF < tableF || thisF > tableF + tableW || thisT < tableT || thisT > tableT + tableH) {
$(this).remove();
}
}
});
}
}
});
});
</script>
</body>
</html>
EasyUI-draggable的更多相关文章
- easyUI draggable组件使用
easyUI draggable组件使用: <!DOCTYPE html> <html lang="en"> <head> <meta c ...
- easyUI draggable插件使用不当,导致拖动div内部文本框无法输入;设置echarts数据为空时就显示空白,不要动画和文字
先上一个Demo <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://ww ...
- EasyUI ---- draggable可拖动的用法
<link href="~/Scripts/easyui1.5/themes/default/easyui.css" rel="stylesheet" / ...
- EasyUI - Draggable 拖动控件
效果: html代码: <div id="box" style="width: 400px; height: 200px; background-color: #f ...
- EasyUI ---- draggable购物车
@{ ViewBag.Title = "Easyui_draggable"; Layout = "~/Views/Shared/Layouts.cshtml"; ...
- EasyUI Draggable 可拖动
通过 $.fn.draggable.defaults 重写默认的 defaults. 用法 通过标记创建可拖动(draggable)元素. <div id="dd" clas ...
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(55)-工作流设计-表单布局
系列目录 前言:这一节比较有趣.基本纯UI,但是不是很复杂 有了实现表单的打印和更加符合流程表单方式,我们必须自定义布局来适合业务场景打印!我们想要什么效果?看下图 (我们没有布局之前的表单和设置布局 ...
- JQuery easyui (1) Draggable(拖动)组件
很不习惯这种强迫式的学习,但谁叫我不是老师了,所以还是决定坚持练习,顺带为博客加点东西.虽然我还是很反感短时间内惯性的去熟悉一个工具. easyui做为一个封装了JQusey的UI插件,其实还是蛮好用 ...
- EasyUI基础知识Draggable(拖累)
学习前easyui基于解析器,装载机.对他们来说,入门阶段,我们只需要在一个简单的理解.第一阶段,不宜过深后,.接着,根据easyui订购的文件正在研究安排官方网站Draggable插入. Dragg ...
- jQuery EasyUI API - Base - Draggable [原创汉化官方API]
最近在学习jQuery EasyUI,发现中文的文档好少,部分文档不错但它是鸟语的,为了大家也为了自己学习吧,汉化做一下笔记. 有没有说清楚的,或者翻译不正确的地方还请大家谅解指出.. 由于工作时间原 ...
随机推荐
- netsh winsock reset
最近要在虚拟机上安装 git ,然后托管一个项目,搞得我是焦头烂额.今天下午我卸载了vmware workstation ,但是奇怪的事就发生了,我的google chrome 浏览器没法浏览网页了. ...
- unity3d用鼠标拖动物体的一段代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 这是一段拖动物体的代码,比较简洁明了,对了解uni ...
- c#强制执行内存回收
[DllImport("psapi.dll")] private static extern int EmptyWorkingSet(int hProcess); GC.Colle ...
- Oracle数据库概述
Oracle是一种RDBMS(Relational Database Management System 关系型数据库管理系统),是Oracle公司的核心产品. 2009年4月,Oracle并购了Su ...
- Vs 2013 单步调试 .net framework 中遇到的问题
为了可以看清.net framework 的的内部机制,进行单步实际是不错的选择啊, 其它的更多设置可以看其它文章,我这里主要讲问题. 然后就会加载PDB,然后就可以单步进入了. 但是 , ...
- OpenJudge计算概论-求一元二次方程的根【含复数根的计算、浮点数与0的大小比较】
/*====================================================================== 求一元二次方程的根 总时间限制: 1000ms 内存限 ...
- wikioi 1201 最小数和最大数
/*==================================================== 1201 最小数和最大数 题目描述 Description 输入n个数,n<=100 ...
- php download断点
FileDownload.class.php <?php /** php下载类,支持断点续传 * Date: 2013-06-30 * Author: fdipzone * Ve ...
- MVC 将视图页table导出成excel
前台代码: <table class="tablelist" id="myTable"> <thead> <t ...
- Oracle的rownum原理和使用
整理和学习了一下网上高手关于rownum的帖子: 参考资料: http://tech.ddvip.com/2008-10/122490439383296.html 和 http://tenn.jav ...