jquery插件之拖拽

该插件乃本博客作者所写,目的在于提升作者的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

时间: 2024-08-03 09:12:43

jquery插件之拖拽的相关文章

jQuery插件(拖拽)

拖曳插件draggable的功能是拖动被绑定的元素,当这个jQuery UI插件与元素绑定后,可以通过调用draggable()方法,实现各种拖曳元素的效果,调用格式如下: $(selector). draggable({options}) options参数为方法调用时的配置对象,根据该对象可以设置各种拖曳效果,如“containment”属性指定拖曳区域,“axis”属性设置拖曳时的坐标方向. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 T

jquery插件之拖拽改变元素大小

该插件乃本博客作者所写,目的在于提升作者的js能力,也给一些js菜鸟在使用插件时提供一些便利,老鸟就悠然地飞过吧. 此插件旨在实现目前较为流行的拖拽改变元素大小的效果,您可以根据自己的实际需求来设置被拖拽元素的最小宽高和最大宽高.整体代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitiona

jQuery拖拽插件制作拖拽排序特效

基于jQuery拖拽插件制作拖拽排序特效是一款非常实用的鼠标拖拽布局插件.效果图如下: 在线预览   源码下载 实现的代码. html代码: <h1>水平拖拽</h1> <div class="demo"> <div class="item item1"><span>1</span></div> <div class="item item2"><

Jquery实现div拖拽

Jquery实现div拖拽 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title> New Document </title> <script type="text/javascript"

jQ插件--时间线插件和拖拽API

这个时间轴是工作上用到的,自己写了一个, qq空间有时间轴的控件, 百度文库也有时间轴的控件: 百度的时间轴大概是这样的: 用户点击对应的锚链接,  那个三角会滚动, 然后左侧的界面也会滚动: 实际的效果如下图,用户点击左侧的按钮或者右侧的input,滚动条都会主动滚动, 这里有个小技巧就是用after和before伪类生成三角形, 用户点击按钮的滚动效果直接用jq的animate方法: 点击查看DEMO:打开 <!-- //设置内容; window.onWebMessage( '{"ty

JQuery UI的拖拽功能

JQuery UI是JQuery官方支持的WebUI 代码库,包含底层交互.动画.特效等API,并且封装了一些Web小部件(Widget).同时,JQuery UI继承了jquery的插件支持,有大量的第三方插件可以丰富JQuery UI的功能. JQuery UI提供的API极大简化了拖拽功能的开发.只需要分别在拖拽源(source)和目标(target)上调用draggable和droppable两个函数即可. 拖拽原理 首先要明确几个概念. ource:拖拽源,要拖动的元素. taerge

element+sortablejs插件实现拖拽排序效果

背景1.后台管理系统中表格需要实现行拖拽功能2.表格使用element组件库中el-table 方案介绍 1.Sortable.js介绍:Sortable.js是一款轻量级的拖放排序列表的js插件引用自官方文档:No jQuery required. Supports Meteor, AngularJS, React, Polymer, Vue, Knockout and any CSS library, e.g. Bootstrap.参考地址: https://github.com/Sorta

js插件-简单拖拽

前端开发的时候,有好多地方用到拖拽效果,当然 http://jqueryui.com/draggable/  是个不错的选择,but 我是个打破砂锅问到底的人,抽点时间用js小小的实现了类似的插件,话不多说. first: html和css <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title></title&g

Jquery实现可拖拽的树菜单

效果图如下所示:下载地址http://download.csdn.net/detail/javaquentin/8290417 <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /&g