请检查以下代码:
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不工作?
发布于 2012-11-20 21:34:52
removeEventListener接受两个参数、事件和要删除的函数。
这应该是可行的:
document.getElementById("div1").removeEventListener("click", clickfn);此外,您正在执行的函数是空的。
var clickfn = function(){ };发布于 2012-11-20 21:35:49
您必须将指定给addEventListener的确切函数指定为第二个参数。如果指定了第三个useCapture参数,则还必须指定与removeEventListener相同和等效的参数。
例如:
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上找到更多信息。
发布于 2020-10-12 22:36:25
我最近在ReactJS的导航条代码中遇到了这个问题,在y轴上滚动100px后,给导航栏一个背景色,如果页面视图在离顶部100px的范围内,就会删除它。
我所要做的就是在removeEventListener中引入一个反向函数来为它提供应用规则。
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);
});
};
});https://stackoverflow.com/questions/13474370
复制相似问题