欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

Drag對象事件用JSON封裝

呂致盈2年前10瀏覽0評論

Drag對象是JavaScript中一個很有用的工具,它能夠讓我們快速地實現拖拽功能。同時,我們可以通過JSON來對Drag對象的事件進行封裝,使得代碼更加可讀且易于維護。

var Drag = {
init: function(target) {
target.addEventListener("mousedown", this.startDrag.bind(this), false);
},
startDrag: function(e) {
this.currentElement = e.target;
this.offsetX = e.clientX - this.currentElement.offsetLeft;
this.offsetY = e.clientY - this.currentElement.offsetTop;
document.addEventListener("mousemove", this.drag.bind(this), false);
document.addEventListener("mouseup", this.stopDrag.bind(this), false);
},
drag: function(e) {
this.currentElement.style.left = (e.clientX - this.offsetX) + "px";
this.currentElement.style.top = (e.clientY - this.offsetY) + "px";
},
stopDrag: function() {
document.removeEventListener("mousemove", this.drag, false);
document.removeEventListener("mouseup", this.stopDrag, false);
}
};

以上是一個基本的Drag對象的封裝,其中包括了初始化、開始拖拽、拖拽中以及停止拖拽等事件。通過JSON的方式來封裝這些事件,可以讓代碼更加可讀。

var Drag = {
init: function(target) {
target.addEventListener("mousedown", this.startDrag.bind(this), false);
},
startDrag: {
func: function(e) {
this.currentElement = e.target;
this.offsetX = e.clientX - this.currentElement.offsetLeft;
this.offsetY = e.clientY - this.currentElement.offsetTop;
document.addEventListener("mousemove", this.drag.bind(this), false);
document.addEventListener("mouseup", this.stopDrag.bind(this), false);
},
ref: ["drag", "stopDrag"]
},
drag: {
func: function(e) {
this.currentElement.style.left = (e.clientX - this.offsetX) + "px";
this.currentElement.style.top = (e.clientY - this.offsetY) + "px";
}
},
stopDrag: {
func: function() {
document.removeEventListener("mousemove", this.drag, false);
document.removeEventListener("mouseup", this.stopDrag, false);
}
}
};

在上方的代碼中,我們通過JSON的方式來封裝了Drag對象的事件。其中,每個事件都包含了一個func屬性和一個ref屬性。func屬性中存儲了事件的具體代碼邏輯,而ref屬性中存儲了需要引用的其他事件,以此來實現事件之間的依賴關系。

通過這種方式的封裝,我們可以更加清晰地看到每個事件的功能以及它們之間的關系,同時也可以更加方便地對代碼進行維護和修改。