首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >removeEventListener的行为

removeEventListener的行为
EN

Stack Overflow用户
提问于 2012-11-20 21:33:10
回答 3查看 9.3K关注 0票数 12

请检查以下代码:

代码语言:javascript
复制
var clickfn = function(){
 alert("clicked");                    
}
document.getElementById("div1").addEventListener("click",clickfn,true);
clickfn = function(){  };
document.getElementById("div1").removeEventListener("click");

http://jsfiddle.net/qUtzL/4/

为什么removeEventListener不工作?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-11-20 21:34:52

removeEventListener接受两个参数、事件和要删除的函数。

这应该是可行的:

代码语言:javascript
复制
document.getElementById("div1").removeEventListener("click", clickfn);

此外,您正在执行的函数是空的。

代码语言:javascript
复制
var clickfn = function(){  };
票数 11
EN

Stack Overflow用户

发布于 2012-11-20 21:35:49

您必须将指定给addEventListener的确切函数指定为第二个参数。如果指定了第三个useCapture参数,则还必须指定与removeEventListener相同和等效的参数。

例如:

代码语言:javascript
复制
function myFunc(event){ alert(event.target.textContent); }

var myElement=document.getElementById('myElement');

//Add EventListener
myElement.addEventListener('click', myFunc, false );

/* ... */

//Remove EventListener
myElement.removeEventListener('click', myFunc, false );

View an example at jsFiddle

你可以在Mozilla Developer wiki上找到更多信息。

票数 7
EN

Stack Overflow用户

发布于 2020-10-12 22:36:25

我最近在ReactJS的导航条代码中遇到了这个问题,在y轴上滚动100px后,给导航栏一个背景色,如果页面视图在离顶部100px的范围内,就会删除它。

我所要做的就是在removeEventListener中引入一个反向函数来为它提供应用规则。

代码语言:javascript
复制
const [show, handleShow] = useState(false);
  useEffect(() => {
    window.addEventListener('scroll', () => {
      if (window.scrollY > 100) {
        // do this
        handleShow(true);
      } else handleShow(false);
    });
    return () => {
      window.removeEventListener('scroll', () => {
        if (window.scrollY < 100) {
          // do this
          handleShow(false);
        } else handleShow(true);
      });
    };
  });
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13474370

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档