base库插件---拖动

 1 /**
 2  * Created by Administrator on 2014/6/5 0005.  Base-drag 基于Base库的拖拽插件  tags为你要拖拽的元素参数, 数组形式传入
 3  */
 4
 5 $().extend(‘drag‘, function () {
 6     var tags = arguments;
 7     for (var i = 0; i < this.elements.length; i ++) {
 8         addEvent(this.elements[i], ‘mousedown‘, function (e) {
 9             if (trim(this.innerHTML).length == 0) e.preventDefault();
10             var _this = this;
11             var diffX = e.clientX - _this.offsetLeft;
12             var diffY = e.clientY - _this.offsetTop;
13
14             //自定义拖拽区域
15             var flag = false;
16
17             for (var i = 0; i < tags.length; i ++) {
18                 if (e.target == tags[i]) {
19                     flag = true;                    //只要有一个是true,就立刻返回
20                     break;
21                 }
22             }
23
24             if (flag) {
25                 addEvent(document, ‘mousemove‘, move);
26                 addEvent(document, ‘mouseup‘, up);
27             } else {
28                 removeEvent(document, ‘mousemove‘, move);
29                 removeEvent(document, ‘mouseup‘, up);
30             }
31
32             function move(e) {
33                 var left = e.clientX - diffX;
34                 var top = e.clientY - diffY;
35
36                 if (left < 0) {
37                     left = 0;
38                 } else if (left <= getScroll().left) {
39                     left = getScroll().left;
40                 } else if (left > getInner().width + getScroll().left - _this.offsetWidth) {
41                     left = getInner().width + getScroll().left - _this.offsetWidth;
42                 }
43
44                 if (top < 0) {
45                     top = 0;
46                 } else if (top <= getScroll().top) {
47                     top = getScroll().top;
48                 } else if (top > getInner().height + getScroll().top - _this.offsetHeight) {
49                     top = getInner().height + getScroll().top - _this.offsetHeight;
50                 }
51
52                 _this.style.left = left + ‘px‘;
53                 _this.style.top = top + ‘px‘;
54
55                 if (typeof _this.setCapture != ‘undefined‘) {
56                     _this.setCapture();
57                 }
58             }
59
60             function up() {
61                 removeEvent(document, ‘mousemove‘, move);
62                 removeEvent(document, ‘mouseup‘, up);
63                 if (typeof _this.releaseCapture != ‘undefined‘) {
64                     _this.releaseCapture();
65                 }
66             }
67         });
68     }
69     return this;
70 });
时间: 2024-12-28 17:19:57

base库插件---拖动的相关文章

base库插件---form

1 $().extend('serialize', function () { 2 for (var i = 0; i < this.elements.length; i ++) { 3 var form = this.elements[i]; 4 var parts = {}; 5 for (var i = 0; i < form.elements.length; i ++) { 6 var filed = form.elements[i]; 7 switch (filed.type) {

Feature.js-轻量级浏览器特性检测JavaScript库插件

简要教程 Feature.js是一款轻量级的浏览器特性检测JavaScript库插件.该插件运行速度快,使用简单,文件只有1kb大小.通过Feature.js你可以检测客户浏览器是否支持某些特性,并针对这些特性编写代码. Feature.js会自动在页面初始化时进行加载,但是它不会自动进行特性检测,直到你在代码中调用它时才会进行指定特性的检测. 通过Feature.js你可以对浏览器进行特性检测,例如检测浏览器是否支持CSS 3D transforms,为支持该特性的浏览器编写代码来操纵元素进行

解决jquery库和base库的冲突

jquery库引用在base库之前,$的所有权就是base库的:而jquery库引用在base库之前后的话,$的所有权就是jquery库的.解决这种库之间的冲突可用以下方法解决: 情况一,jquery库引用在base库之前 比如: //var $$ = jQuery; $(funtion(){       //jquery库引用在base库之前,$的所有权就是base库的 alert($("#box").ge(0)); //ge()方法属于base而不属于jquery alert(jQ

可视化CSS3动画代码生成js库插件-Bounce.js

简要教程 Bounce.js是一款功能非常强大的可视化CSS3动画代码生成js库插件.该js库插件提供了一个在线APP,通过该APP可以在可视化的条件下编辑CSS3的各种动画效果,如移动.旋转.倾斜.easing等效果,编辑完成后可以直接获取该CSS3帧动画的代码,复制代码到你的页面中即可在你的页面上获得与该动画一样的效果.此外,你也可以单独使用Bounce.js,通过js代码来完成各种CSS3动画效果.Bounce.js能与jQuery完美结合. 查看演示     下载插件 安装 可以通过Bo

WPF 控件库——可拖动选项卡的TabControl

原文:WPF 控件库--可拖动选项卡的TabControl 一.先看看效果 二.原理 1.选项卡大小和位置 这次给大家介绍的控件是比较常用的TabControl,网上常见的TabControl样式有很多,其中一部分也支持拖动选项卡,但是带动画效果的很少见.这也是有原因的,因为想要做一个不失原有功能,还需要添加动画效果的控件可不是一行代码的事.要做成上图中的效果,我们不能一蹴而就,最忌讳的是一上来就想实现所有效果. 一开始,我们最好先用Blend看看原生的TabControl样式模板部分是如何实现

base库

1 /* 2 * 跨浏览器基础库=============================================== 3 * */ 4 5 //浏览器检测 6 (function () { 7 window.sys = {}; 8 var ua = navigator.userAgent.toLowerCase(); 9 var s; 10 (s = ua.match(/msie ([\d.]+)/)) ? sys.ie = s[1] : 11 (s = ua.match(/firef

linux 动态库插件技术(c/c++):动态链接库

概述 插件技术的目的是为了更好的扩展性.动态链接库是其中 一种实现方式. 这里主要论述几个问题. 1)linux上关于这些api的描述.看完linux上关于dlopen等函数的描述基本就可以写出简单的动态链接库使用. 2)关于c++使用动态链接库的一些问题和注意事项. 3)扩展,编译器的各选项,动态链接库和静态链接库. linux api:dlopen,dlsym,dlerror,dlclose 摘自ubuntu kylin 14.04,内核3.13.0-32generic #include<d

库&amp;插件&amp;框架&amp;工具

nodejs 入门 nodejs 入门教程,大家可以在 github 上提交错误 2016 年最好用的表单验证库 SMValidator.js 前端表单验证工具分享 浅谈前端线上部署与运维 说到前端部署,可能大多数前端工程师在工作中都是使用的公司现成的部署系统,与SRE对接.一起完成前端的部署操作.如果我现在给你一台新注册的云主机,那么你应该怎么做才能把一个前端工程部署到一台云主机上,成为一个可以访问的网页呢?今天我们就来聊聊前端的部署~ 首先,一个前端工程要变成- 一个 jQuery 前端插件

google base库中的WaitableEvent

这个类说白了就是对windows event的封装,没有什么特别的,常规做法,等侍另一线程无非就是等侍事件置信waitsingleobject,通知事件无非就是setevent,一看就明白,不就详解,写在这里只是为了这个系更的完整性 下边的示例代码注意下: // WaitableEvent *e = new WaitableEvent; // SendToOtherThread(e); // e->Wait(); // delete e;  SendToOtherThread(e); 这个应当就