详解有关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 相关文章推荐
javascript Discuz代码中的msn聊天小功能
May 25 Javascript
根据配置文件加载js依赖模块
Dec 29 Javascript
JavaScript简单表格编辑功能实现方法
Apr 16 Javascript
JavaScript实现节点的删除与序号重建实例
Aug 05 Javascript
js弹出框、对话框、提示框、弹窗实现方法总结(推荐)
May 31 Javascript
jQuery+json实现动态创建复杂表格table的方法
Oct 25 Javascript
js 打开新页面在屏幕中间的实现方法
Nov 02 Javascript
Bootstrap中datetimepicker使用小结
Dec 28 Javascript
详谈jQuery中的一些正则匹配表达式
Mar 08 Javascript
详解vue静态资源打包中的坑与解决方案
Feb 05 Javascript
微信小程序页面滚动到指定位置代码实例
Sep 07 Javascript
使用layui监听器监听select下拉框,事件绑定不成功的解决方法
Sep 28 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判断并删除空目录及空子目录的方法
2015/02/11 PHP
php处理复杂xml数据示例
2016/07/11 PHP
如何运行/调试你的PHP代码
2020/10/23 PHP
用Laravel轻松处理千万级数据的方法实现
2020/12/25 PHP
两个SUBMIT按钮,如何区分处理
2006/08/22 Javascript
lib.utf.js
2007/08/21 Javascript
学习ExtJS(二) Button常用方法
2009/10/07 Javascript
js以对象为索引的关联数组
2010/07/04 Javascript
js异步加载的三种解决方案
2013/03/04 Javascript
js 一个关于图片onload加载的事
2013/11/10 Javascript
Javasipt:操作radio标签详解
2013/12/30 Javascript
JavaScript监听和禁用浏览器回车事件实例
2015/01/31 Javascript
JavaScript中利用各种循环进行遍历的方式总结
2015/11/10 Javascript
jquery中live()方法和bind()方法区别分析
2016/06/23 Javascript
Angular.js项目中使用gulp实现自动化构建以及压缩打包详解
2017/07/19 Javascript
vue中选项卡点击切换且能滑动切换功能的实现代码
2018/11/25 Javascript
layui form.render('select', 'test2') 更新渲染的方法
2019/09/27 Javascript
nodejs中使用archive压缩文件的实现代码
2019/11/26 NodeJs
Python 爬虫学习笔记之单线程爬虫
2016/09/21 Python
利用Python进行异常值分析实例代码
2017/12/07 Python
Python通过matplotlib画双层饼图及环形图简单示例
2017/12/15 Python
Python之web模板应用
2017/12/26 Python
Python 操作 ElasticSearch的完整代码
2019/08/04 Python
Pandas0.25来了千万别错过这10大好用的新功能
2019/08/07 Python
虚拟机下载python是否需要联网
2020/07/27 Python
python 实现单例模式的5种方法
2020/09/23 Python
python中使用asyncio实现异步IO实例分析
2021/02/26 Python
IGK Hair官网:喷雾、洗发水、护发素等
2020/11/03 全球购物
夏季奶茶店创业计划书
2014/01/16 职场文书
医院检讨书范文
2014/02/01 职场文书
护士求职信
2014/07/05 职场文书
法人授权委托书公证范本
2014/09/14 职场文书
交通事故一次性赔偿协议书范本
2014/11/02 职场文书
英文慰问信
2015/02/14 职场文书
2015初中团委工作总结
2015/07/28 职场文书
MySQL限制查询和数据排序介绍
2022/03/25 MySQL