2015-10-13 81 views
0

如何使用Javascript刪除以下事件偵聽器?下面簡單Javascript:如何移除eventListener?

var commentArea=$(this).parent().find('.comment_input_content')[0]; 

    commentEditDropbox = commentArea; 
    commentEditDropbox.addEventListener("dragenter", dragenter, false); 
    commentEditDropbox.addEventListener("dragover", dragover, false); 
    commentEditDropbox.addEventListener("drop", drop, false); 
    function dragenter(e) { 
     e.stopPropagation(); 
     e.preventDefault(); 
     // $("#topic_content_input").css("cursor:copy");   
    } 
    function dragover(e) { 
     e.stopPropagation(); 
     e.preventDefault(); 
     // $("#topic_content_input").css("cursor:copy"); 
    } 
    function drop(e) { 
     e.stopPropagation(); 
     e.preventDefault(); 
     // $("#topic_content_input").css("cursor:copy"); 
     var dt = e.dataTransfer; 
     var files = dt.files; 
     var attr = $(this).attr('contenteditable'); 
     // if contenteditable is true 
     if(attr){ 
     commentEditHandleFileSelect(files); 
     alert("drop"); 
     } 
    } 

我累代碼通過替換的addEventListener到removeEventlistener,但沒有工作:(

var commentArea=$(this).parent().find('.comment_input_content')[0]; 

commentEditDropbox = commentArea; 
commentEditDropbox.removeEventListener("dragenter", dragenter, false); 
commentEditDropbox.removeEventListener("dragover", dragover, false); 
commentEditDropbox.removeEventListener("drop", drop, false); 

回答

0

你使用jQuery選擇你要那麼你會得到一個jQuery選擇對象的元素。

我會建議並removeEventListener改變的addEventListener關閉。

commentEditDropbox.on("dragenter", dragenter); 
commentEditDropbox.on("dragover", dragover); 
commentEditDropbox.on("drop", drop); 

commentEditDropbox.off("dragenter", dragenter); 
commentEditDropbox.off("dragover", dragover); 
commentEditDropbox.off("drop", drop); 
+0

當我更改它時會打印錯誤:SyntaxError:意外的字符串文字「dragover」 –

+0

您是否有時間查看整個腳本?它是一個拖放圖像處理功能。 addEventListener的問題在於它有時會多次將同一個偵聽器添加到同一個對象,所以我必須將其刪除。 JQuery打開和關閉方法可以幫助我從根本上解決問題,但我有問題將其切換到JQuery,它打印錯誤,你能幫忙嗎? –

+0

你能編輯你的問題以包含更多的代碼嗎? – spaniol6