参数怎么填解除事件绑定需要函数名,但是如果给出函数名this又发生了变化 ?为什么

<!DOCTYPE>
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<meta name="viewport" content="width=device-width,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no"/>
<meta name="format-detection" content="telephone=no"/>
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="white">
<style type="text/css">
* { padding:0; margin:0;}
#div1 { width:100px; height:100px; background-color:Red; position:absolute;}
</style>
<script language="javascript" type="text/javascript">

function PhoneDrag(id) {
var _this = this;
this.oDiv = document.getElementById(id);
this.disX = 0;
this.disY = 0;
this.oDiv.addEventListener("touchstart", function (ev) {
_this.fnDown(ev);
}, false);

}
PhoneDrag.prototype.fnDown = function (ev) {
var _this = this;
var oEvent = ev.touches[0];
ev.preventDefault();
this.disX = oEvent.clientX - this.oDiv.offsetLeft;
this.disY = oEvent.clientY - this.oDiv.offsetTop;
document.addEventListener("touchmove", function (ev) {
_this.fnMove(ev);
}, false);
document.addEventListener("touchend", function (ev) {
//这里是手指抬起的时候 如何删除touchmove事件
document.removeEventListerner(document, "这里怎么填");
}, false);

}
PhoneDrag.prototype.fnMove = function (ev) {
var oEvent = ev.touches[0];
var iX = oEvent.clientX - this.disX;
var iY = oEvent.clientY - this.disY;
this.oDiv.style.top = iY + "px";
this.oDiv.style.left = iX + "px";
}

window.onload = function () {
new PhoneDrag("div1");
}
</script>
</head>
<body>
<div id="div1"></div>
</body>
</html>
这是移动端移动DIV的例子

HUX布斯
浏览 128回答 2
2回答

POPMUISE

//&nbsp;因为你注册事件时的第二个参数函数是匿名函数调用已存函数&nbsp;//&nbsp;我不知道这样写是否有效&nbsp;你试下document.removeEventListerner("touchmove",&nbsp;function&nbsp;(ev)&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_this.fnMove(ev);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},&nbsp;false);只有被addEventListener方法添加的事件才可以使用removeEventListener来注销.删除事件时removeEventListener的三个参数必须要跟addEventListener的参数相同语法:elem.removeEventListener(event_type,fun_name,bool);event_type:事件类型.比如单击,或双击.或移动鼠标事件等.fun_name:要被注销的事件名称,函数名.bool:布尔值.true或false.true代表支持事件冒泡.false则不支持事件冒泡捕获

慕码人8056858

function&nbsp;PhoneDrag(id)&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;_this&nbsp;=&nbsp;this;&nbsp;&nbsp;&nbsp;&nbsp;this.oDiv&nbsp;=&nbsp;document.getElementById(id);&nbsp;&nbsp;&nbsp;&nbsp;this.disX&nbsp;=&nbsp;0;&nbsp;&nbsp;&nbsp;&nbsp;this.disY&nbsp;=&nbsp;0;&nbsp;&nbsp;&nbsp;&nbsp;this.oDiv.addEventListener("touchstart",&nbsp;function&nbsp;(ev)&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_this.fnDown(ev);&nbsp;&nbsp;&nbsp;&nbsp;},&nbsp;false);&nbsp;}PhoneDrag.prototype.fnDown&nbsp;=&nbsp;function&nbsp;(ev)&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;_this&nbsp;=&nbsp;this;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;oEvent&nbsp;=&nbsp;ev.touches[0];&nbsp;&nbsp;&nbsp;&nbsp;ev.preventDefault();&nbsp;&nbsp;&nbsp;&nbsp;this.disX&nbsp;=&nbsp;oEvent.clientX&nbsp;-&nbsp;this.oDiv.offsetLeft;&nbsp;&nbsp;&nbsp;&nbsp;this.disY&nbsp;=&nbsp;oEvent.clientY&nbsp;-&nbsp;this.oDiv.offsetTop;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;解除事件绑定的时候需要用到&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;touchmoveHandle&nbsp;=&nbsp;function&nbsp;(ev)&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_this.fnMove(ev);&nbsp;&nbsp;&nbsp;&nbsp;};&nbsp;&nbsp;&nbsp;&nbsp;document.addEventListener("touchmove",&nbsp;touchmoveHandle,&nbsp;false);&nbsp;&nbsp;&nbsp;&nbsp;document.addEventListener("touchend",&nbsp;function&nbsp;(ev)&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//这里是手指抬起的时候&nbsp;如何删除touchmove事件&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document.removeEventListerner('touchmove',&nbsp;touchmoveHandle,&nbsp;false);&nbsp;&nbsp;&nbsp;&nbsp;},&nbsp;false);&nbsp;}PhoneDrag.prototype.fnMove&nbsp;=&nbsp;function&nbsp;(ev)&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;oEvent&nbsp;=&nbsp;ev.touches[0];&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;iX&nbsp;=&nbsp;oEvent.clientX&nbsp;-&nbsp;this.disX;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;iY&nbsp;=&nbsp;oEvent.clientY&nbsp;-&nbsp;this.disY;&nbsp;&nbsp;&nbsp;&nbsp;this.oDiv.style.top&nbsp;=&nbsp;iY&nbsp;+&nbsp;"px";&nbsp;&nbsp;&nbsp;&nbsp;this.oDiv.style.left&nbsp;=&nbsp;iX&nbsp;+&nbsp;"px";}&nbsp;window.onload&nbsp;=&nbsp;function&nbsp;()&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;new&nbsp;PhoneDrag("div1");}
打开App,查看更多内容
随时随地看视频慕课网APP