記錄這個沒別的意思,之前這段代碼貌沒有問題,但是調(diào)試的時候移除事件貌不能用源代碼如下: !--拖動div--!DOCTYPE html PUBLIC -//W3C//DTD XHTML 1.0 Transitional//EN http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtdhtml xmlns=http://www.w3.
記錄這個沒別的意思,之前這段代碼貌似沒有問題,但是調(diào)試的時候移除事件貌似不能用源代碼如下:
無標題文檔 script>-->
一直搞不懂為什么事件不能移除?這個代碼就一直放下了,結(jié)果剛才看《javascript高級程序設計》才知道removeEventListener不能傳無參的構造函數(shù),因為addEventListener可以給元素綁定多個事件,所以removeEventListener的時候找不到了!修改好的代碼如下:
/** * 綁定事件 **/ var addEvent = function(obj, eventName, handle) { if(window.addEventListener) { obj.addEventListener(eventName, handle, false); }else { obj.attachEvent("on" + eventName, handle); } } var removeEvent = function (obj, eventName, handle){ if (window.removeEventListener) { obj.removeEventListener(eventName, handle, false); }else if(window.detachEvent){ obj.detachEvent("on" + eventName, handle); }else { obj["on"+eventName] = null; } }; var $ = function(id) { return "string" == typeof id ? document.getElementById(id) : id; } //js兼容性 var page = { event: function (evt) { var ev = evt || window.event; return ev; }, target: function(evt) { return evt.target || evt.srcElement; }, pageX: function (evt) { var e = this.event(evt); return e.pageX || (e.clientX + document.body.scrollLeft - document.body.clientLeft); }, pageY: function (evt) { var e = this.event(evt); return e.pageY || (e.clientY + document.body.scrollTop - document.body.clientTop); }, layerX: function (evt) { var e = this.event(evt); return e.layerX || e.offsetX; }, layerY: function (evt) { var e = this.event(evt); return e.layerY || e.offsetY; } } var drag = function(obj) { obj.style.position="absolute"; var mousedownFun, mousemoveFun, mouseupFun, x, y, target; mousedownFun = function(event){ target = page.target(event); x = page.layerX(event); y = page.layerY(event); addEvent(obj,"mousemove", mousemoveFun); addEvent(obj,"mouseup", mouseupFun); }; mousemoveFun = function(event){ var tx = page.pageX(event) - x; var ty = page.pageY(event) - y; target.style.left = tx + "px"; target.style.top = ty + "px"; }; mouseupFun = function(event) { removeEvent(obj, "mousemove",mousemoveFun); removeEvent(obj, "mouseup",mouseupFun); } addEvent(obj,"mousedown", mousedownFun); } drag($("div2"));
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com