2015-10-13 82 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