详解有关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 相关文章推荐
Google Map API更新实现用户自定义标注坐标
Jul 29 Javascript
前端开发过程中浏览器版本的两种判定方法
Oct 30 Javascript
JavaScript获取文本框内选中文本的方法
Feb 20 Javascript
JavaScript无缝滚动效果的实例代码
Mar 27 Javascript
ES6下React组件的写法示例代码
May 04 Javascript
node.js到底要不要加分号浅析
Jul 11 Javascript
Jquery获取radio选中值实例总结
Jan 17 jQuery
Vue  webpack 项目自动打包压缩成zip文件的方法
Jul 24 Javascript
vue实现随机验证码功能(完整代码)
Dec 10 Javascript
浅谈vue中$event理解和框架中在包含默认值外传参
Aug 07 Javascript
js实现删除json中指定的元素
Sep 22 Javascript
ajax jquery实现页面某一个div的刷新效果
Mar 04 jQuery
利用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
德生1994机评
2021/03/02 无线电
用DBSQL类加快开发MySQL数据库程序的速度
2006/10/09 PHP
ajax 的post方法实例(带循环)
2011/07/04 PHP
浅析PHP编程中10个最常见的错误
2014/08/08 PHP
PHP simplexml_load_string()函数实例讲解
2019/02/03 PHP
laravel框架中间件 except 和 only 的用法示例
2019/07/12 PHP
javascript下IE与FF兼容函数收集
2008/09/17 Javascript
使用ajaxfileupload.js实现上传文件功能
2016/08/13 Javascript
ES6新特性之模块Module用法详解
2017/04/01 Javascript
JQuery.dataTables表格插件添加跳转到指定页
2017/06/09 jQuery
nodejs实现OAuth2.0授权服务认证
2017/12/27 NodeJs
微信小程序表单弹窗实例
2018/07/19 Javascript
原生JS封装_new函数实现new关键字的功能
2018/08/12 Javascript
微信小程序开发实现消息推送
2020/11/18 Javascript
Elementui表格组件+sortablejs实现行拖拽排序的示例代码
2019/08/28 Javascript
基于javascript实现贪吃蛇小游戏
2019/11/25 Javascript
Vue.js实现大屏数字滚动翻转效果
2019/11/29 Javascript
vue项目打包之开发环境和部署环境的实现
2020/04/23 Javascript
vue实现商品列表的添加删除实例讲解
2020/05/14 Javascript
python 输出一个两行字符的变量
2009/02/05 Python
Python 字符串定义
2009/09/25 Python
在Python中封装GObject模块进行图形化程序编程的教程
2015/04/14 Python
用python实现百度翻译的示例代码
2018/03/09 Python
Django JWT Token RestfulAPI用户认证详解
2019/01/23 Python
django中media媒体路径设置的步骤
2019/11/15 Python
Python笔记之facade模式
2019/11/20 Python
解决python中的幂函数、指数函数问题
2019/11/25 Python
Python2与Python3关于字符串编码处理的差别总结
2020/09/07 Python
纽约手袋品牌:KARA
2018/03/18 全球购物
Linux的主要特性
2014/10/06 面试题
三爱活动实施方案
2014/03/19 职场文书
推广普通话演讲稿
2014/05/23 职场文书
2015年九一八事变纪念日演讲稿
2015/03/19 职场文书
重阳节主题班会
2015/08/17 职场文书
Django实现聊天机器人
2021/05/31 Python
英国数字版游戏销量周榜公布 《小缇娜的奇幻之地》登顶
2022/04/03 其他游戏