详解有关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 相关文章推荐
基于Jquery的标签智能验证实现代码
Dec 27 Javascript
动感效果的TAB选项卡jquery 插件
Jul 09 Javascript
jquery mobile页面跳转后样式丢失js失效的解决方法
Sep 06 Javascript
jQuery简单获取键盘事件的方法
Jan 22 Javascript
jQuery绑定事件的几种实现方式
May 09 Javascript
js数组的五种迭代方法及两种归并方法(推荐)
Jun 14 Javascript
在线引用最新jquery文件的实现方法
Aug 26 Javascript
基于JavaScript实现屏幕滚动效果
Jan 18 Javascript
整理关于Bootstrap列表组的慕课笔记
Mar 29 Javascript
React父子组件间的传值的方法
Nov 13 Javascript
JavaScript本地储存:localStorage、sessionStorage、cookie的使用
Oct 13 Javascript
vue实现动态给id赋值,点击事件获取当前点击的元素的id操作
Nov 09 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
新浪SAE搭建PHP项目教程
2015/01/28 PHP
提高php编程效率技巧
2015/08/13 PHP
AJAX的使用方法详解
2017/04/29 PHP
JSON 编辑器实现代码
2009/12/06 Javascript
深入理解JSON数据源格式
2014/01/10 Javascript
使用AngularJS 应用访问 Android 手机的图片库
2015/03/24 Javascript
jquery实现手机号码选号的方法
2015/07/31 Javascript
详谈javascript异步编程
2016/02/21 Javascript
深入理解JavaScript 函数
2016/06/06 Javascript
JavaScript操作 url 中 search 部分方法函数
2016/06/15 Javascript
微信小程序(六):列表上拉加载下拉刷新示例
2017/01/13 Javascript
Bootstrap 表单验证formValidation 实现远程验证功能
2017/05/17 Javascript
Vue 中批量下载文件并打包的示例代码
2017/11/20 Javascript
vue 通过下拉框组件学习vue中的父子通讯
2017/12/19 Javascript
深入浅析JSONAPI在PHP中的应用
2017/12/24 Javascript
Element-ui table中过滤条件变更表格内容的方法
2018/03/02 Javascript
pycharm安装图文教程
2017/05/02 Python
python实现淘宝秒杀聚划算抢购自动提醒源码
2020/06/23 Python
对python程序内存泄漏调试的记录
2018/06/11 Python
python调用百度语音REST API
2018/08/30 Python
python 自定义异常和异常捕捉的方法
2018/10/18 Python
浅谈Python中eval的强大与危害
2019/03/13 Python
Python Django简单实现session登录注销过程详解
2019/08/06 Python
Python logging日志库空间不足问题解决
2020/09/14 Python
详解Python中list[::-1]的几种用法
2020/11/16 Python
python绘制雷达图实例讲解
2021/01/03 Python
css3实现一款模仿iphone样式的注册表单
2013/03/20 HTML / CSS
详解HTML5常用的语义化标签
2019/09/27 HTML / CSS
Tirendo比利时:在线购买轮胎
2018/10/22 全球购物
销售经理工作职责范文
2013/12/03 职场文书
一年级学生期末评语
2014/04/21 职场文书
中学教师师德承诺书
2014/05/23 职场文书
nginx基于域名,端口,不同IP的虚拟主机设置的实现
2021/03/31 Servers
使用redis生成唯一编号及原理示例详解
2021/09/15 Redis
Python实现为PDF去除水印的示例代码
2022/04/03 Python
HttpClient实现表单提交上传文件
2022/08/14 Java/Android