easyUI中droppable,draggable用法列子修改

港控/mmm° 2022-06-16 03:44 220阅读 0赞

在项目中要用到拖动效果,之前写了一点不够完善,今天做了一点优化,在以前的基础上可以相互拖动了,改动的地方不大,但为了不影响之前的效果,我还是重新记录一下.

HTML和我之前记录的文章一样,我就不重复了。。。

以下是js:

  1. var targetFlag=false;//判断从框中拖出去是否拖到了另一个框 $('.items li').draggable({
  2. proxy: 'clone',
  3. revert: true });
  4. // 级联统计指标放置区 $('.target-cascade').droppable({
  5. onDragEnter: function(e,source){
  6. $(this).css('border','1px solid red');
  7. },
  8. onDragLeave: function(e,source){
  9. $(this).css('border','1px solid #ddd');
  10. },
  11. onDrop: function(e,source){
  12. // 判断拖动的元素是否存在于放置区内 var buttonName="";
  13. if($(source).draggable('options').proxy === 'clone') {//判断是否是克隆元素,即判断是否是从另一个框中拖过来的元素
  14. // 禁用拖动 NotDrag(source);
  15. // 将拖入元素的原位置记录下来 var buttonName = $(source).find('span').html();
  16. }else {
  17. buttonName = $(source).html();
  18. targetFlag = true;
  19. }
  20. var Ele = $('<li class='+ $(source)[0].className +'><button class='+ $(source)[0].className +'>'+ buttonName +'</button></li>');
  21. Ele.appendTo('.target-cascade ul');
  22. $(this).css('border','1px solid #ddd');
  23. // 拖动放置区内的元素 $(this).find('button').draggable({
  24. revert: true,
  25. onStopDrag: function(e){
  26. var _indexClass = $(this).attr("class");
  27. $(this).parents("li").remove();
  28. if(targetFlag==false){
  29. $('.items li[class='+_indexClass+']').draggable('enable');
  30. $('.items li[class='+_indexClass+']').find('i').css('backgroundColor','#FF34B3');
  31. }else{
  32. targetFlag=false;
  33. }
  34. }
  35. });
  36. }
  37. });
  38. // 列指标放置区 $('.target-column').droppable({
  39. onDragEnter: function(e,source){
  40. $(this).css('border','1px solid red');
  41. },
  42. onDragLeave: function(e,source){
  43. $(this).css('border','1px solid #ddd');
  44. },
  45. onDrop: function(e,source){
  46. // 判断拖动的元素是否存在于放置区内 var buttonName="",className="";
  47. if($(source).draggable('options').proxy === 'clone') {
  48. // 禁用拖动 NotDrag(source);
  49. buttonName = $(source).find('span').html();
  50. }else {
  51. buttonName = $(source).html();
  52. targetFlag=$(source);
  53. }
  54. className=$(source)[0].className;
  55. var Ele = $('<li class='+className +'><button class='+className +'>'+ buttonName +'</button><select class="'+ className +'"><option value ="show">显示</option>'+
  56. '<option value ="sum">求和</option><option value ="count">计数</option></select></li>');
  57. Ele.appendTo('.target-column ul');
  58. $(this).css('border','1px solid #ddd');
  59. // 拖动放置区内的元素 $(this).find('button').draggable({
  60. revert: true,
  61. onDrag: function(e){
  62. $(this).siblings('select').hide();
  63. },
  64. onStopDrag: function(e){
  65. var _indexClass = $(this).attr("class");
  66. $(this).parents("li").remove();
  67. if(targetFlag==false){
  68. $('.items li[class='+_indexClass+']').draggable('enable');
  69. $('.items li[class='+_indexClass+']').find('i').css('backgroundColor','#FF34B3');
  70. }else{
  71. targetFlag=false;
  72. } }
  73. });
  74. }
  75. });

这里有一点和之前的发生了改变,记录元素位置时这里使用了元素的class,以前使用的是相对于其他元素的index值,over!!

发表评论

表情:
评论列表 (有 0 条评论,220人围观)

还没有评论,来说两句吧...

相关阅读