前言

关于讲解 JS 的拖拽功能的文章数不胜数,我确实没有必要大费周章再写一篇重复的文章来吸引眼球。本文的重点是讲解如何在某些特定的元素上禁止拖拽。这是我在编写插件时遇到的问题,其实很多插件的拖拽功能并没有处理这些细节,经过翻阅 jquery ui 的源码才找到答案。

拖拽实现

关于拖拽功能不再啰嗦,直接贴代码

/**

* draggable 拖拽方法

* @param {type} modal - 移动元素

* @param {type} handle - 可拖拽区域*/

var draggable = function(modal, handle) {var isDragging = false;var startX = 0,

startY= 0,

left= 0,

top= 0;var dragStart = function(e) {var e = e ||window.event;

e.preventDefault();

isDragging= true;

startX=e.clientX;

startY=e.clientY;

left=$(modal).offset().left;

top=$(modal).offset().top;

}var dragMove = function(e) {var e = e ||window.event;

e.preventDefault();if(isDragging) {var endX =e.clientX,

endY=e.clientY,

relativeX= endX -startX,

relativeY= endY -startY;

$(modal).css({

left: relativeX+ left + 'px',

top: relativeY+ top + 'px'});

}return false;

}var dragEnd = function(e) {

isDragging= false;

}

$(handle).on('mousedown', dragStart);

$(document).on('mousemove', dragMove);

$(document).on('mouseup', dragEnd);

}

使用方法

演示 Demo HTML

draggable禁止拖动_通过 JS 实现简单的拖拽功能并且可以在特定元素上禁止拖拽...相关推荐

  1. electron 解压zip_node.js实现简单的压缩/解压缩功能示例

    本文实例讲述了node.js实现简单的压缩/解压缩功能.分享给大家供大家参考,具体如下: 压缩的例子 非常简单的几行代码,就完成了本地文件的gzip压缩. var fs = require('fs') ...

  2. java使用重绘实现拖动_原生JS使用Canvas实现拖拽式绘图功能

    一.实现的功能 1.基于oop思想构建,支持坐标点.线条(由坐标点组成,包含方向).多边形(由多个坐标点组成).圆形(包含圆心坐标点和半径)等实体 2.原生JavaScript实现,不依赖任何第三方j ...

  3. instanceof用法_「JS很简单」JavaScript 基础之 instanceof操作符

    最近开始在整理ES6/ES7/ES8/ES9的知识点(已经上传到 我的博客 上),碰到一些知识点是自己已经忘记(用得少的知识点),于是也重新复习了一遍. 这篇文章要复习的 instanceof 是我在 ...

  4. 10次机会 js 猜数_用JS实现简单的猜数小游戏

    js的猜数游戏所用的知识点很少,主要的有随机产生一个随机整数,然后就是利用循环和if语句来做判断来实现游戏 第一步:我们要先随机产生出一个1-1000之间的整数 var num=Math.round( ...

  5. qt禁止拖动_[Qt]QMdiArea,无框架窗口的拖动

    0:QMdiArea中添加子窗口后,想固定or调整窗口的大小 需要在addSubWindow()函数调用后返回子窗口的指针,然后再设置子窗口的大小 注意设置imagelabel的大小是没有效果的,im ...

  6. 用java编写一个抛物线运动_用js实现简单的抛物线运动

    前言 老早就看过一些购物车的抛物线效果,也想自己凑热闹动手来实现一遍. 然后(lll¬ω¬) 书到用时方恨少,发现高中学到物理啊.数学啊,都忘光了,抛物线公式都忘了0 0. 顺手百度一波,从百度可知: ...

  7. 利用Vue.js实现简单的留言板功能

    此案例主要实现点击发送留言的按钮,将我们的留言以及留言人的信息展示在留言板上,下面就是具体的步骤: 一 .搭建整个留言板页面结构 为了页面整体效果稍微好看一点,此案例运用bootstrap框架对页面表 ...

  8. 用python做一个购物车编程_利用python实现简单的循环购物车功能示例代码

    本文主要给大家介绍了关于python实现循环购物车功能的相关内容,分享出来供大家参考学习,下面来一起看看详细的介绍: 示例代码 # -*- coding: utf-8 -*- __author__ = ...

  9. vue实现搜索框记录搜索历史_使用JS location实现搜索框历史记录功能_苏颜_前端开发者...

    首先,来看下效果图(样式什么的就不必吐槽了哈) 搜索记录: //用于保存记录信息 * { margin: 0; padding: 0; } input { border: 0; vertical-al ...

最新文章

  1. Android 简单基站定位程序
  2. pcf8523_PCF上的Spring Cloud合同和Spring Cloud Services
  3. CentOs基础操作指令(运行级别)
  4. 引用dll文件要复制到本地
  5. 【Java】java 实现 线程交替输出
  6. xhell 镜像_2020官网下载Xshell 6.0.189.0中文版
  7. 2-算法 矩阵 数组类
  8. linux线程调度与rtos,实时Linux和RTOS的基本特性及技术进行比较
  9. Android编译环境——ubuntu12.04上android2.3.4编译错误以及解决
  10. nodejs入门开发与常用模块
  11. 数据随机丢失情况下多传感器多速率鲁棒融合估计
  12. matlab画图函数汇总(二)
  13. c语言入门if语句(嵌套)
  14. win10显示计算机控制面板,win10控制面板,教您win10如何打开控制面板
  15. 汇编语言-实验6(学习打卡Day18)
  16. LIC2020 百度语言与智能技术竞赛(一)——语义解析冠军方案
  17. 新能源汽车VCU/HCU,BMS和MCU仿真测试系统实验室
  18. Linux系统结构以及各类命令的汇总
  19. 计算机无法访问苹果相册,iPhone与电脑连接后找不到照片怎么办?掌握这三个技巧,烦恼问题轻松解决!...
  20. html诗集代码简单,自制简单的诗歌搜索系统

热门文章

  1. nginx如何配置多站点
  2. jQuery初识 - jQuery中的方法
  3. 【ES6】let命令、const命令、解构赋值
  4. 探索MicroPython(一)--基础介绍
  5. PAT乙级 1076 Wifi密码
  6. html 表单js验证,JavaScript使用表单元素验证表单
  7. java mathrandom函数_java Math数学工具及Random随机函数
  8. ES6对于数组的扩展
  9. __name__ == '__main__'的用法
  10. LintCode 69---二叉树的层次遍历