EasyUI jQuery Draggable widget

  • Post category:jquery

EasyUI jQuery Draggable是EasyUI框架提供的一个可拖拽的jQuery插件,用于处理网页中的拖拽效果。下面是EasyUI jQuery Draggable的完整攻略。

安装和引用

EasyUI jQuery Draggable是EasyUI框架的一部分,因此安装和引用EasyUI后,即可使用EasyUI jQuery Draggable。可以通过官网下载EasyUI的压缩包,解压后将easyui文件夹复制到项目中,并引用easyui.css和easyui.js文件。

<link rel="stylesheet" type="text/css" href="easyui/themes/bootstrap/easyui.css">
<link rel="stylesheet" type="text/css" href="easyui/themes/icon.css">
<script type="text/javascript" src="easyui/jquery.min.js"></script>
<script type="text/javascript" src="easyui/jquery.easyui.min.js"></script>

使用EasyUI jQuery Draggable

基本用法

EasyUI jQuery Draggable需要作用于一个DOM元素上才能起作用,下面的代码演示了如何使用EasyUI jQuery Draggable将一个div元素变成可拖动的:

<div id="dragDiv" class="easyui-panel" style="width:200px;height:200px;">
  <p>这是一个可拖拽的面板</p>
</div>

<script>
  $('#dragDiv').draggable();
</script>

在这个示例中,我们首先创建了一个id为dragDiv的div元素,并设置了其样式和内容。然后在script标签中使用$(‘#dragDiv’).draggable()将div元素变成可拖动的。

高级用法

EasyUI jQuery Draggable支持多种配置选项,常用的选项包括:

  • handle: 指定用于拖动的元素的选择器,默认是整个可拖动元素。
  • disabled: 是否禁用拖拽功能。
  • onStart: 在开始拖拽时触发的函数。
  • onDrag: 在拖拽过程中触发的函数。
  • onStop: 在停止拖拽时触发的函数。

下面的示例演示了如何使用EasyUI jQuery Draggable设置高级选项:

<div id="dragDiv2" class="easyui-panel" style="width:200px;height:200px;">
  <div class="panel-header">可以拖动我</div>
  <div class="panel-body">这是一个可拖拽的面板</div>
</div>

<script>
  $('#dragDiv2').draggable({
    handle: '.panel-header',
    onStart: function(){
      console.log('开始拖动');
    },
    onDrag: function(){
      console.log('拖动中');
    },
    onStop: function(){
      console.log('停止拖动');
    }
  });
</script>

在此示例中,我们首先创建了一个id为dragDiv2的div元素,并使用class设置了面板的标题和内容。然后在script标签中,设置了handle为.panel-header,表示只有点击面板标题才能拖动面板;同时设置了onStart、onDrag和onStop回调函数,分别在开始、拖动和停止拖动时被调用,并输出相应的信息到控制台。

示例说明

下面的两个示例演示了EasyUI jQuery Draggable如何应用于常见场景:

拖拽元素改变位置

在此示例中,我们创建了一个用于拖拽的块,当拖拽它时,它会改变自己的位置。点击“重置”按钮可将块恢复到初始位置。

<div id="dragBlock" style="width:50px;height:50px;background-color:#007bff;color:#fff;text-align:center;line-height:50px;">
  拖拽我
</div>
<button id="resetBtn" class="btn btn-primary">重置</button>

<script>
  $('#dragBlock').draggable({
    onStop: function(){
      var position = $(this).position();
      console.log('新位置:left=' + position.left + ',top=' + position.top);
    }
  });

  $('#resetBtn').click(function(){
    $('#dragBlock').css({left:0, top:0});
  });
</script>

在此示例中,我们首先创建了一个用于拖拽的块,并设置了初始样式和内容。然后在script标签中,使用$(‘#dragBlock’).draggable()将块变成可拖动的,并设置了onStop回调函数,输出拖拽结束时的坐标信息。最后设置一个“重置”按钮,当点击“重置”按钮时,将块的left和top属性设置为0,将其恢复到初始位置。

拖拽元素实现排序

在此示例中,我们创建了一个可拖动的列表,当拖动一个列表项时,它会改变自己的位置,并触发排序逻辑。点击“显示结果”按钮可输出当前列表项排序结果。

<ul id="dragList">
  <li class="dragItem">列表项1</li>
  <li class="dragItem">列表项2</li>
  <li class="dragItem">列表项3</li>
  <li class="dragItem">列表项4</li>
  <li class="dragItem">列表项5</li>
</ul>
<button id="showResultBtn" class="btn btn-primary">显示结果</button>

<script>
  $('#dragList').sortable({
    update: function(event, ui){
      console.log('排序更新:' + $(this).sortable('toArray'));
    }
  });

  $('#dragList').disableSelection();

  $('#showResultBtn').click(function(){
    console.log('排序结果:' + $('#dragList').sortable('toArray'));
  });
</script>

在此示例中,我们首先创建了一个无序列表,并将列表项的class设置为dragItem。然后在script标签中,使用$(‘#dragList’).sortable()将列表变成可排序的,并设置了update回调函数,输出排序结果到控制台。同时使用$(‘#dragList’).disableSelection()禁止选中文本。最后设置一个“显示结果”按钮,当点击“显示结果”按钮时,输出当前列表项排序结果到控制台。