面向对象拖拽(子类继承)

Drag(父类)

function Drag(id){
    var _this = this;
    this.disX = 0;
    this.disY = 0;
    this.oDiv = document.getElementById(id);

    this.oDiv.onmousedown = function(ev){
        _this.fnDown(ev);
        return false;
    };
}

Drag.prototype.fnDown = function(ev){
        var _this = this;
        var oEvent = ev || event;

        this.disX = oEvent.clientX-this.oDiv.offsetLeft;
        this.disY = oEvent.clientY-this.oDiv.offsetTop;

        document.onmousemove = function(ev){
            _this.fnMove(ev);
        };
        document.onmouseup = function(){
            _this.fnUp();    
        };
}
Drag.prototype.fnMove = function (ev){
            var oEvent = ev || event;

            this.oDiv.style.left = oEvent.clientX-this.disX+'px';
            this.oDiv.style.top = oEvent.clientY-this.disY+'px';
}
Drag.prototype.fnUp = function (){
            document.onmousemove=null;
            document.onmouseup=null;
}

/*window.onload=function(){
    var oDiv = document.getElementById('div1');

    oDiv.onmousedown=function(ev){
        var oEvent = ev || event;

        var disX = oEvent.clientX-oDiv.offsetLeft;
        var disY = oEvent.clientY-oDiv.offsetTop;

        document.onmousemove = function(ev){
            var oEvent = ev || event;

            oDiv.style.left = oEvent.clientX-disX+'px';
            oDiv.style.top = oEvent.clientY-disY+'px';
        };

        document.onmouseup=function(){
            document.onmousemove=null;
            document.onmouseup=null;
        };
    }
}*/

limitDrag(子类)

function LimitDrag(id){
    Drag.call(this, id);
}
for(var i in Drag.prototype){
    LimitDrag.prototype[i]=Drag.prototype[i];
}

LimitDrag.prototype.fnMove = function(ev){
    var oEvent = ev || event;
    var l = oEvent.clientX-this.disX;
    var t = oEvent.clientY-this.disY;

    if(l < 0){
        l=0;
    }else if(l > document.documentElement.clientWidth-this.oDiv.offsetWidth){
        l = document.documentElement.clientWidth-this.oDiv.offsetWidth;
    }

    this.oDiv.style.left = l +'px';
    this.oDiv.style.top = t +'px';
}

 

posted @ 2014-12-07 22:07  oceanden  阅读(153)  评论(0编辑  收藏  举报