码迷,mamicode.com
首页 > Web开发 > 详细

jquery插件之拖拽

时间:2015-09-09 19:29:11      阅读:131      评论:0      收藏:0      [点我收藏+]

标签:

该插件乃本博客作者所写,目的在于提升作者的js能力,也给一些js菜鸟在使用插件时提供一些便利,老鸟就悠然地飞过吧。

此插件旨在实现目前较为流行的拖拽效果,您可以根据自己的实际需求来设置被拖拽元素是否可以被拖拽至可视区域以外。整体代码如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<style>
*{margin:0;padding:0;}
.box{position:absolute;left:100px;top:100px;border:1px solid #eee;width:150px;height:150px;padding:10px;cursor:move;}
</style>
<script type="text/javascript" src="../test/jquery-1.7.1.js"></script>
<script type="text/javascript" src="jquery.drag.js"></script>
</head>

<body>
<div class="box">拖拽我吧!</div>
<script>
$(function(){
    $(".box").drag({
        out:false    //false 默认匹配元素不能被拖拽至可视区域以外
        });
    })
</script>
</body>
</html>

拖拽插件jquery.drag.js代码:

/*
*drag 0.1
*Copyright (c) 2015 小坏 http://tnnyang.cnblogs.com
*Dependenc jquery-1.7.1.js
*/
;(function(a){
    a.fn.drag = function(options){
        var defaults = {   //默认参数
            out:false   //默认匹配元素不会被拖至可视区域以外
            }
        var opts = a.extend(defaults, options);
        
        this.each(function(){
            var obj = a(this);    
            obj.mousedown(function(e){    
                var e = e || event;    //区分IE和其他浏览器事件对象
                var x = e.pageX - obj.offset().left;    //获取鼠标距离匹配元素左侧的距离                        
                var y = e.pageY - obj.offset().top;     //获取鼠标距离匹配元素顶端的距离
                
                $(document).mousemove(function(e){
                    var e = e || event;
                    var _x = e.pageX - x;        //动态获取元素左侧距离
                    var _y = e.pageY - y;
                    if(!opts.out){                        
                        var maxW = $(window).width() - obj.outerWidth();    //可视区域左侧距离匹配元素左侧的宽度
                        var maxH = $(window).height() - obj.outerHeight();   //可视区域顶部距离匹配元素顶部的高度
                        _x = _x < 0 ? 0 : _x;      //保证匹配元素不会被拖至可视区域以外
                        _x = _x > maxW ? maxW : _x;
                        _y = _y <0 ? 0 : _y;
                        _y = _y > maxH ? maxH : _y;
                        }else{
                            _x = _x;
                            _y = _y;
                            }        
                    obj.css({left:_x,top:_y});
                }).mouseup(function(){
                    $(this).unbind("mousemove");  //当鼠标抬起  删除移动事件   匹配元素停止移动
                    });
                });
            
            })
        }
    })(jQuery);

点击下载拖拽DEMO

jquery插件之拖拽

标签:

原文地址:http://www.cnblogs.com/tnnyang/p/4795442.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!