亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

參數怎么填解除事件綁定需要函數名,但是如果給出函數名this又發生了變化 ?為什么

參數怎么填解除事件綁定需要函數名,但是如果給出函數名this又發生了變化 ?為什么

HUX布斯 2022-06-15 17:11:16
<!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的例子
查看完整描述

2 回答

?
POPMUISE

TA貢獻1765條經驗 獲得超5個贊


// 因為你注冊事件時的第二個參數函數是匿名函數調用已存函數 // 我不知道這樣寫是否有效 你試下document.removeEventListerner("touchmove"function (ev) {                _this.fnMove(ev);            }, false);

只有被addEventListener方法添加的事件才可以使用removeEventListener來注銷.
刪除事件時removeEventListener的三個參數必須要跟addEventListener的參數相同

語法:elem.removeEventListener(event_type,fun_name,bool);

event_type:事件類型.比如單擊,或雙擊.或移動鼠標事件等.
fun_name:要被注銷的事件名稱,函數名.
bool:布爾值.true或false.true代表支持事件冒泡.false則不支持事件冒泡捕獲



查看完整回答
反對 回復 2022-06-20
?
慕碼人8056858

TA貢獻1803條經驗 獲得超6個贊


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;    // 解除事件綁定的時候需要用到    var touchmoveHandle = function (ev) {        _this.fnMove(ev);    };    document.addEventListener("touchmove", touchmoveHandle, false);    document.addEventListener("touchend"function (ev) {        //這里是手指抬起的時候 如何刪除touchmove事件        document.removeEventListerner('touchmove', touchmoveHandle, false);    }, 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");}




查看完整回答
反對 回復 2022-06-20
  • 2 回答
  • 0 關注
  • 150 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號