js拖动效果

<script type="text/javascript">

    var isIE = (document.all) ? true : false;

    var $ = function(id) {
        return "string" == typeof id ? document.getElementById(id) : id;
    };

    var Class = {
        create: function() {
            return function() { this.initialize.apply(this, arguments); }
        }
    }

    var Extend = function(destination, source) {
        for (var property in source) {
            destination[property] = source[property];
        }
    }

    var Bind = function(object, fun) {
        return function() {
            return fun.apply(object, arguments);
        }
    }

    var BindAsEventListener = function(object, fun) {
        return function(event) {
            return fun.call(object, (event || window.event));
        }
    }

    function addEventHandler(oTarget, sEventType, fnHandler) {
        if (oTarget.addEventListener) {
            oTarget.addEventListener(sEventType, fnHandler, false);
        } else if (oTarget.attachEvent) {
            oTarget.attachEvent("on" + sEventType, fnHandler);
        } else {
            oTarget["on" + sEventType] = fnHandler;
        }
    };

    function removeEventHandler(oTarget, sEventType, fnHandler) {
        if (oTarget.removeEventListener) {
            oTarget.removeEventListener(sEventType, fnHandler, false);
        } else if (oTarget.detachEvent) {
            oTarget.detachEvent("on" + sEventType, fnHandler);
        } else {
            oTarget["on" + sEventType] = null;
        }
    };

    //拖放程序
    var SimpleDrag = Class.create();
    SimpleDrag.prototype = {
        //拖放对象,触发对象
        initialize: function(drag) {
            this.Drag = $(drag);
            this._x = this._y = 0;
            this._fM = BindAsEventListener(this, this.Move);
            this._fS = Bind(this, this.Stop);
            this.Drag.style.position = "absolute";
            addEventHandler(this.Drag, "mousedown", BindAsEventListener(this, this.Start));
        },
        //准备拖动
        Start: function(oEvent) {
            this._x = oEvent.clientX - this.Drag.offsetLeft;
            this._y = oEvent.clientY - this.Drag.offsetTop;
            addEventHandler(document, "mousemove", this._fM);
            addEventHandler(document, "mouseup", this._fS);
        },
        //拖动
        Move: function(oEvent) {
            this.Drag.style.left = oEvent.clientX - this._x + "px";
            this.Drag.style.top = oEvent.clientY - this._y + "px";
        },
        //停止拖动
        Stop: function() {
            removeEventHandler(document, "mousemove", this._fM);
            removeEventHandler(document, "mouseup", this._fS);
        }
    };
    new SimpleDrag("kf");
页面同样也要有一个DIV的id="kf"
</script>

转载于:https://www.cnblogs.com/epwqgdnvrhok/archive/2009/02/07/1385908.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值