当前位置:首页 > jquery

jquery拖动事件

2026-03-16 23:06:14jquery

jQuery 拖动事件实现

jQuery 本身不直接提供拖动功能,但可以通过结合 jQuery UI 或原生 HTML5 拖放 API 实现。以下是两种常见方法:

使用 jQuery UI 的 Draggable

jQuery UI 提供了 draggable() 方法,可快速实现元素拖动:

jquery拖动事件

// 引入 jQuery 和 jQuery UI 后
$("#draggable-element").draggable({
    containment: "parent", // 限制在父元素内拖动
    cursor: "move",        // 拖动时鼠标样式
    revert: true           // 释放后返回原位置
});

使用 HTML5 原生拖放 API

通过原生事件实现更基础的拖动控制:

var isDragging = false;
var offsetX, offsetY;

$("#drag-target").mousedown(function(e) {
    isDragging = true;
    offsetX = e.offsetX;
    offsetY = e.offsetY;
});

$(document).mousemove(function(e) {
    if (!isDragging) return;
    $("#drag-target").css({
        left: e.pageX - offsetX,
        top: e.pageY - offsetY
    });
}).mouseup(function() {
    isDragging = false;
});

拖动事件回调

jQuery UI 提供多个事件回调:

jquery拖动事件

$(".draggable").draggable({
    start: function() { console.log("拖动开始"); },
    drag: function() { console.log("拖动中"); },
    stop: function() { console.log("拖动结束"); }
});

限制拖动范围

通过 containment 参数限制拖动区域:

$("#element").draggable({
    containment: [x1, y1, x2, y2] // 坐标范围
    // 或使用选择器
    // containment: "#container" 
});

拖动辅助元素

可创建拖动时的视觉辅助:

$("#target").draggable({
    helper: "clone",    // 拖动克隆体
    opacity: 0.7        // 半透明效果
});

标签: 拖动事件
分享给朋友:

相关文章

vue实现拖动刻度

vue实现拖动刻度

实现拖动刻度功能 在Vue中实现拖动刻度功能可以通过结合原生HTML5的拖拽API和Vue的数据绑定特性来完成。以下是一个完整的实现方案: 基本实现思路 创建一个可拖动的滑块元素 监听鼠标事件处理拖…

vue实现卡片拖动

vue实现卡片拖动

Vue 实现卡片拖动的几种方法 使用 HTML5 拖放 API HTML5 提供了原生的拖放 API,可以在 Vue 中直接使用。通过 draggable 属性标记可拖动的元素,并监听 dragsta…

vue实现拖动宽度

vue实现拖动宽度

Vue 实现拖动调整宽度 在 Vue 中实现拖动调整宽度可以通过监听鼠标事件和使用 CSS 样式来实现。以下是具体实现方法: 使用鼠标事件监听 创建一个可拖动的分隔条,通过监听 mousedown、…

vue怎么实现拖动

vue怎么实现拖动

Vue 实现拖动的常用方法 使用 HTML5 原生拖放 API HTML5 提供了原生的拖放 API,可以通过 draggable 属性和相关事件实现基础拖动功能。适用于简单场景。 <temp…

vue实现后退事件

vue实现后退事件

监听浏览器后退事件 在Vue中可以通过window.onpopstate或beforeRouteLeave路由守卫实现后退事件监听。以下是两种常用方法: 方法一:使用window.onpopstat…

vue中实现长按事件

vue中实现长按事件

监听原生事件实现长按 在Vue中可以通过@mousedown和@touchstart绑定原生事件,配合setTimeout触发长按逻辑。清除定时器使用@mouseup、@mouseleave和@tou…