详解有关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 相关文章推荐
推荐:极酷右键菜单
Nov 29 Javascript
RGB颜色值转HTML十六进制(HEX)代码的JS函数
Apr 25 Javascript
JS 实现导航栏悬停效果(续2)
Sep 24 Javascript
动态读取JSON解析键值对的方法
Jun 03 Javascript
jQuery javascript获得网页的高度与宽度的实现代码
Apr 26 Javascript
值得分享的轻量级Bootstrap Table表格插件
May 30 Javascript
深入浅析JavaScript中的arguments对象(强力推荐)
Jun 03 Javascript
html、css和jquery相结合实现简单的进度条效果实例代码
Oct 24 Javascript
详解jQuery插件开发方式
Nov 22 Javascript
vue.js框架实现表单排序和分页效果
Aug 09 Javascript
javascript操作元素的常见方法小结
Nov 13 Javascript
JS实现音量控制拖动
Jan 15 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
PHP 正则表达式常用函数
2014/08/17 PHP
在Mac OS上搭建Nginx+PHP+MySQL开发环境的教程
2015/12/21 PHP
Zend Studio使用技巧两则
2016/04/01 PHP
PHP策略模式定义与用法示例
2017/07/27 PHP
php文件上传原理与实现方法详解
2019/12/20 PHP
js字符编码函数区别分析
2008/06/05 Javascript
兼容IE和Firefox火狐的上下、左右循环无间断滚动JS代码
2013/04/19 Javascript
JAVASCRIPT模式窗口中下载文件无法接收iframe的流
2013/10/11 Javascript
jQuery分别获取选中的复选框值的示例
2014/06/17 Javascript
JavaScript中的object转换函数toString()与valueOf()介绍
2014/12/31 Javascript
论JavaScript模块化编程
2016/03/07 Javascript
随机生成10个不重复的0-100的数字(实例讲解)
2017/08/16 Javascript
解析Vue.js中的组件
2018/02/02 Javascript
Vue  webpack 项目自动打包压缩成zip文件的方法
2019/07/24 Javascript
React Native 混合开发多入口加载方式详解
2019/09/23 Javascript
基于JavaScript判断两个对象内容是否相等
2020/01/10 Javascript
Python的迭代器和生成器
2015/07/29 Python
python爬取微信公众号文章
2018/08/31 Python
python将txt等文件中的数据读为numpy数组的方法
2018/12/22 Python
对python以16进制打印字节数组的方法详解
2019/01/24 Python
树莓派4B+opencv4+python 打开摄像头的实现方法
2019/10/18 Python
np.newaxis 实现为 numpy.ndarray(多维数组)增加一个轴
2019/11/30 Python
以SQLite和PySqlite为例来学习Python DB API
2020/02/05 Python
简单了解Python多态与属性运行原理
2020/06/15 Python
python对 MySQL 数据库进行增删改查的脚本
2020/10/22 Python
植物选择:Botanic Choice
2017/02/15 全球购物
Kiehl’s科颜氏西班牙官方网站:源自美国的植物护肤品牌
2020/02/22 全球购物
自我鉴定思想方面
2013/10/07 职场文书
女娲补天教学反思
2014/02/05 职场文书
人力资源部经理助理岗位职责
2014/03/04 职场文书
“学雷锋活动月”总结
2014/03/09 职场文书
反邪教警示教育方案
2014/05/13 职场文书
我爱祖国演讲稿
2014/09/02 职场文书
不听老师话的万能检讨书
2014/10/04 职场文书
小学英语教学经验交流材料
2015/11/02 职场文书
数据分析数据库ClickHouse在大数据领域应用实践
2022/04/03 MySQL