jq点击元素进行拖拽

css

* {
    padding:0;
    margin:0;
}
html,body {
    height:100%;
}
.bbox {
    background-color:#3B51A2
}
.box,.box2,.box3 {
    position:absolute;
    width:200px;
    height:200px;
    border:1px solid #eee;
    background-color:#323C6C;
}
.box2 {
    background-color:#4AAF59;
}
.box3 {
    background-color:#F19A4E;
}

html

<div class="bbox">
    <div class="box"></div>
    <div class="box2"></div>
    <div class="box3"></div>
</div>

js

$.fn.extend({

    lzhDrag: function (obj) {
        let max_left = $(this).offsetParent().outerWidth() - $(this).outerWidth(),
            max_top = $(this).offsetParent().outerHeight() - $(this).outerHeight();
        $(this).on('mousedown', event => {
            let ele_x = event.offsetX,
                ele_y = event.offsetY;
            obj.startDown && obj.startDown();
            $(document).on('mousemove', e => {
                obj.startMove && obj.startMove();
                e.preventDefault();
                let left = e.clientX - ele_x,
                    top = e.clientY - ele_y;
                left = left < 0 ? 0 : left;
                top = top < 0 ? 0 : top;
                left = left > max_left ? max_left : left;
                top = top > max_top ? max_top : top;
                $(this).css({
                    left, top
                })
            })
        })
        $(document).on('mouseup', () => {

            $(document).off('mousemove');
            obj.overMove && obj.overMove();
        })
        return this;
    }
})
    
/**
            * 
            lzhDrag()有一个参数,参数为对象
                startDown:鼠标按下的时候会触发的函数
                startMove:鼠标开始移动触发的函数
                overMove:移动对象停止移动时触发函数(拖拽事件鼠标抬起触发)
            */
        $(".box").lzhDrag({
            startDown: function () {
                console.log("down");
            },
            startMove: function () {
                console.log("startmove");
            },
            overMove: function () {
                console.log("move");
            }
        }).html("box1");
        
        $(".box2").lzhDrag({
            startDown: function () {
                console.log("down");
            },
            startMove: function () {
                console.log("startmove");
            },
            overMove: function () {
                console.log("move");
            }
        }).html("box2");
        
        $(".box3").lzhDrag({
            startDown: function () {
                console.log("down");
            },
            startMove: function () {
                console.log("startmove");
            },
            overMove: function () {
                console.log("move");
            }
        }).html("box3");
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容