jquery拖拽事件
jQuery 拖拽事件实现方法
jQuery 本身不直接提供拖拽功能,但可以通过结合原生 HTML5 的拖拽 API 或使用 jQuery UI 库来实现。以下是两种常见实现方式:
使用 jQuery UI 实现拖拽
jQuery UI 提供了完善的拖拽功能,需要先引入相关库文件:
<!-- 引入 jQuery 和 jQuery UI -->
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.min.js"></script>
<link rel="stylesheet" href="https://code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
基础拖拽实现代码:

$(function() {
$("#draggable").draggable({
cursor: "move",
containment: "parent",
revert: "invalid"
});
});
使用 HTML5 原生拖拽 API
如果不希望引入 jQuery UI,可以使用 HTML5 的原生拖拽 API 配合 jQuery:
$(document).ready(function() {
var $draggable = $('.draggable');
$draggable.attr('draggable', 'true');
$draggable.on('dragstart', function(e) {
e.originalEvent.dataTransfer.setData('text/plain', $(this).attr('id'));
});
$('.dropzone').on('dragover', function(e) {
e.preventDefault();
$(this).addClass('dragover');
});
$('.dropzone').on('dragleave', function() {
$(this).removeClass('dragover');
});
$('.dropzone').on('drop', function(e) {
e.preventDefault();
$(this).removeClass('dragover');
var id = e.originalEvent.dataTransfer.getData('text/plain');
$('#' + id).appendTo(this);
});
});
拖拽事件回调函数
jQuery UI 的 draggable 组件提供了多个事件回调:

$("#element").draggable({
start: function(event, ui) {
// 拖拽开始时触发
},
drag: function(event, ui) {
// 拖拽过程中持续触发
},
stop: function(event, ui) {
// 拖拽结束时触发
}
});
限制拖拽范围
可以通过选项限制拖拽范围:
$("#element").draggable({
containment: "parent", // 限制在父元素内
axis: "x", // 只能水平拖拽
grid: [50, 50] // 按网格拖拽
});
拖拽辅助元素
可以设置拖拽时显示的辅助元素:
$("#element").draggable({
helper: "clone", // 克隆元素作为拖拽辅助
opacity: 0.7 // 设置辅助元素透明度
});
以上方法可以根据具体需求选择使用,jQuery UI 的方案功能更全面,而原生 API 的方案则更轻量。






