详解有关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 xml为数据源的下拉框控件
Jul 07 Javascript
js弹出窗口之弹出层的小例子
Jun 17 Javascript
jQuery中的read和JavaScript中的onload函数的区别
Aug 27 Javascript
jQuery实现文本框输入同步的方法
Jun 20 Javascript
详细介绍jQuery.outerWidth() 函数具体用法
Jul 20 Javascript
js实现文本框宽度自适应文本宽度的方法
Aug 13 Javascript
JavaScript拖拽、碰撞、重力及弹性运动实例分析
Jan 08 Javascript
node.js文件上传处理示例
Oct 27 Javascript
Angular.js自定义指令学习笔记实例
Feb 24 Javascript
JavaScript表单验证完美代码
Mar 02 Javascript
使用vue与jquery实时监听用户输入状态的操作代码
Sep 19 jQuery
微信小程序自定义可滑动日历界面
Dec 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
使用MaxMind 根据IP地址对访问者定位
2006/10/09 PHP
php excel类 phpExcel使用方法介绍
2010/08/21 PHP
php获取通过http协议post提交过来xml数据及解析xml
2012/12/16 PHP
PHP图像处理类库及演示分享
2015/05/17 PHP
php字符串操作针对负值的判断分析
2016/07/28 PHP
node.js中的fs.readFile方法使用说明
2014/12/15 Javascript
javascript实现淡蓝色的鼠标拖动选择框实例
2015/05/09 Javascript
Angularjs过滤器使用详解
2016/05/25 Javascript
javascript设计模式之module(模块)模式
2016/08/19 Javascript
详解Angular 4.x NgIf 的用法
2017/05/22 Javascript
jQuery滚动插件scrollable.js用法分析
2017/05/25 jQuery
关于jQuery.ajax()的jsonp碰上post详解
2017/07/02 jQuery
用vscode开发vue应用的方法步骤
2019/05/06 Javascript
深入解析Python中的集合类型操作符
2015/08/19 Python
python中通过预先编译正则表达式提高效率
2017/09/25 Python
python3写的简单本地文件上传服务器实例
2018/06/04 Python
python对象与json相互转换的方法
2019/05/07 Python
python五子棋游戏的设计与实现
2019/06/18 Python
python PyAutoGUI 模拟鼠标键盘操作和截屏功能
2019/08/04 Python
OpenCV python sklearn随机超参数搜索的实现
2020/01/17 Python
获取python运行输出的数据并解析存为dataFrame实例
2020/07/07 Python
解决PyCharm不在run输出运行结果而不是再Console里输出的问题
2020/09/21 Python
Python使用pyenv实现多环境管理
2021/02/05 Python
HTML5新增属性data-*和js/jquery之间的交互及注意事项
2017/08/08 HTML / CSS
简历里的自我评价
2014/01/31 职场文书
生产文员岗位职责
2014/04/05 职场文书
热爱祖国演讲稿
2014/05/04 职场文书
铅球加油稿100字
2014/09/26 职场文书
简单的离婚协议书范本
2014/11/16 职场文书
2015年企业新年寄语
2014/12/08 职场文书
报案材料怎么写
2015/05/25 职场文书
2016年大学生就业指导课心得体会
2015/10/09 职场文书
合同范本之电脑出租
2019/08/13 职场文书
Python实现Telnet自动连接检测密码的示例
2021/04/16 Python
利用Python读取微信朋友圈的多种方法总结
2021/08/23 Python
使用Nginx搭载rtmp直播服务器的方法
2021/10/16 Servers