详解有关easyUI的拖动操作中droppable,draggable用法例子


Posted in Javascript onJune 03, 2017

这个demo展示的效果为:从上面可以拖动到下面相应的框中(原有的不能再拖动),拖动框中的东西到外面可以取消

-----------以下为HTML

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <title></title>
  <link rel="stylesheet" type="text/css" href="css/bootstrap-3.3.5/css/bootstrap.min.css" rel="external nofollow" >
  <link rel="stylesheet" type="text/css" href="css/easyui.css" rel="external nofollow" >
  <link rel="stylesheet" type="text/css" href="css/icon.css" rel="external nofollow" >
  <link rel="stylesheet" href="css/demo.css" rel="external nofollow" >
</head>
<body>
  <div class="container">
   <ul class="items">
     <li class="category">
      <i></i>
      <span>品类</span>
     </li>
     <li class="factory">
      <i></i>
      <span>工厂</span>
     </li>
     <li class="with-high">
      <i></i>
      <span>跟高</span>
     </li>
     <li class="with-type">
      <i></i>
      <span>跟型</span>
     </li>
     <li class="price">
      <i></i>
      <span>单价</span>
     </li>
   </ul>
   <div class="target">
     <div class="target-cascade">
      <span>级联统计指标</span>
      <ul>
      </ul>
     </div>
     <div class="target-column">
      <span>列指标</span>
      <ul>
      </ul>
     </div>
   </div>
  </div>
  <script src="js/jquery.js"></script>
  <script src="js/jquery.easyui.min.js"></script>
  <script src="js/demo.js"></script>
</body>
</html>

-------------以下为js代码

var tab = [];
$('.items li').draggable({
  proxy: 'clone',
  revert: true
});
// 级联统计指标放置区
$('.target-cascade').droppable({
  onDragEnter: function(e,source){
   $(this).css('border','1px solid red');
  },
  onDragLeave: function(e,source){
   $(this).css('border','1px solid black');
  },
  onDrop: function(e,source){
   // 判断拖动的元素是否存在于放置区内
   if($(source).draggable('options').proxy === 'clone'){
     // 禁用拖动
     NotDrag(source);
     // 将拖入元素的原位置记录下来
     var buttonName = $(source).find('span').html();
     console.log("--------"+$(source).index());
     tab[buttonName] = $(source).index();//返回指定元素相对于其他元素的位置(0,1等),如果没有找到,则返回-1
     var Ele = $('<li class='+ $(source)[0].className +'><button>'+ buttonName +'</button></li>');
     Ele.appendTo('.target-cascade ul');
   }
   $(this).css('border','1px solid black');

   // 拖动放置区内的元素
   $(this).find('button').draggable({
     revert: true,
     onStopDrag: function(e){
      var _index = tab[$(this).html()];
      $(this).parent().remove();
      $('.items li:eq('+_index+')').draggable('enable');
      $('.items li:eq('+_index+')').find('i').css('backgroundColor','red');
     }
   });
  }
});
// 列指标放置区
$('.target-column').droppable({
  onDragEnter: function(e,source){
   $(this).css('border','1px solid red'); 
  },
  onDragLeave: function(e,source){
   $(this).css('border','1px solid black');
  },
  onDrop: function(e,source){
   // 判断拖动的元素是否存在于放置区内
   if($(source).draggable('options').proxy === 'clone'){
     // 禁用拖动
     NotDrag(source);
     var buttonName = $(source).find('span').html();
     tab[buttonName] = $(source).index();
     var Ele = $('<li class='+ $(source)[0].className +'><button>'+ buttonName +'</button><select><option value ="show">显示</option>'+
      '<option value ="sum">求和</option><option value ="count">计数</option></select></li>');
     Ele.appendTo('.target-column ul');
   }
   $(this).css('border','1px solid black');
   // 拖动放置区内的元素
   $(this).find('button').draggable({
     revert: true,
     onDrag: function(e){
      $(e.data.parent).find('select').hide();
     },
     onStopDrag: function(e){
      var _index = tab[$(this).html()];
      $(this).parent().remove();
      $('.items li:eq('+_index+')').draggable('enable');
      $('.items li:eq('+_index+')').find('i').css('backgroundColor','red');

      $(e.target).siblings('select').show();
     }
   });
  }
});
//禁止拖动
function NotDrag(source){
  $(source).draggable('disable');//禁用拖动动作
  $(source).find('i').css('backgroundColor','grey');
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JS动态调用方法名示例介绍
Dec 18 Javascript
jquery退出each循环的写法
Feb 26 Javascript
js数组与字符串的相互转换方法
Jul 09 Javascript
Jquery实现顶部弹出框特效
Aug 08 Javascript
javascript表单事件处理方法详解
May 15 Javascript
JavaScript登录验证码的实现
Oct 27 Javascript
详解vue之页面缓存问题(基于2.0)
Jan 10 Javascript
jQuery中map函数的两种方式
Apr 07 jQuery
详解angularjs中如何实现控制器和指令之间交互
May 31 Javascript
浅谈Node异步编程的机制
Oct 18 Javascript
详解微信小程序入门从这里出发(登录注册、开发工具、文件及结构介绍)
Jul 21 Javascript
如何利用js在两个html窗口间通信
Apr 27 Javascript
利用vueJs实现图片轮播实例代码
Jun 03 #Javascript
angular中使用Socket.io实例代码
Jun 03 #Javascript
jquery请求servlet实现ajax异步请求的示例
Jun 03 #jQuery
深入理解Node中的buffer模块
Jun 03 #Javascript
MvcPager分页控件 适用于Bootstrap
Jun 03 #Javascript
全面解析Node.js 8 重要功能和修复
Jun 02 #Javascript
vue 中自定义指令改变data中的值
Jun 02 #Javascript
You might like
Windows PHP5和Apache的安装与配置
2009/06/08 PHP
php获取'/'传参的值简单方法
2017/07/13 PHP
PHP实现防盗链的方法分析
2017/07/25 PHP
js确认删除对话框适用于a标签及submit
2014/07/10 Javascript
详解AngularJS中自定义指令的使用
2015/06/17 Javascript
JavaScript每天定时更换皮肤样式的方法
2015/07/01 Javascript
Javascript实现快速排序(Quicksort)的算法详解
2015/09/06 Javascript
JS+Canvas绘制时钟效果
2020/08/20 Javascript
bootstrap导航条实现代码
2016/12/28 Javascript
vue+vux实现移动端文件上传样式
2017/07/28 Javascript
jQuery 实时保存页面动态添加的数据的示例
2017/08/14 jQuery
JS中跳出循环的示例代码
2017/09/14 Javascript
微信小程序的日期选择器的实例详解
2017/09/29 Javascript
Vue父子组建的简单通信之控制开关Switch的实现
2018/06/04 Javascript
小程序tab页无法传递参数的方法
2018/08/03 Javascript
微信小程序实现注册登录功能(表单校验、错误提示)
2019/12/10 Javascript
Vue实现点击箭头上下移动效果
2020/06/11 Javascript
小程序点餐界面添加购物车左右摆动动画
2020/09/23 Javascript
Angular处理未可知异常错误的方法详解
2021/01/17 Javascript
教你用Python创建微信聊天机器人
2020/03/31 Python
python pandas dataframe 行列选择,切片操作方法
2018/04/10 Python
python:print格式化输出到文件的实例
2018/05/14 Python
详解Django rest_framework实现RESTful API
2018/05/24 Python
Python3.5实现的罗马数字转换成整数功能示例
2019/02/25 Python
python射线法判断一个点在图形区域内外
2019/06/28 Python
Pandas之read_csv()读取文件跳过报错行的解决
2020/04/21 Python
Python如何使用vars返回对象的属性列表
2020/10/17 Python
python基于win32api实现键盘输入
2020/12/09 Python
弄清Pytorch显存的分配机制
2020/12/10 Python
Farfetch阿联酋:奢侈品牌时尚购物平台
2019/07/26 全球购物
英国历史最悠久的DJ设备供应商:DJ Finance、DJ Warehouse、The DJ Shop
2019/09/04 全球购物
屈臣氏乌克兰:Watsons UA
2019/10/29 全球购物
大学生个人简历自我评价
2013/11/16 职场文书
党建工作先进材料
2014/05/02 职场文书
感谢信格式范文
2015/01/22 职场文书
Golang表示枚举类型的详细讲解
2021/09/04 Golang