短querySelector
function __(el){
return document.querySelectorAll(el);
};vars实例
img = _('.thumbnail img'),
canvas = _('#cs')它已被更新,以显示
img.addEventListener('mousemove', function colorCatcher(e){
spin = document.getElementsByClassName('spin');
parts = spin[0].className.split('-');
if(parts[4] == 'left'){
preview = __('.stripes'),x = '',y = '';
}else{
preview = _('.strike-through'),x = '',y = '';
}
if(e.offsetX) {
x = e.offsetX;
y = e.offsetY;
}
else if(e.layerX) {
x = e.layerX;
y = e.layerY;
}
useCanvas(canvas,img,function(){
var p = canvas.getContext('2d')
.getImageData(x, y, 1, 1).data;
if(preview.length == 2){
preview[0].style.background = rgbToHex(p[0],p[1],p[2]);
preview[1].style.background = rgbToHex(p[0],p[1],p[2]);
}else{
preview.style.background = rgbToHex(p[0],p[1],p[2]);
}
});
}, false);我不知道如何在上面做removeEventListener。
我试过这样的东西:
img.removeEventListener('mousemove', img.colorCatcher, false);
document.removeEventListener('mousemove', img.colorCatcher,
window.removeEventListener('mousemove', img.colorCatcher, false);我做错了什么?
发布于 2017-04-13 21:09:50
您不必在removeEventListener上指定目标--在这种情况下,应该是:
img.removeEventListener('mousemove', colorCatcher, false);另一件事是在IE和Safari中,您需要指定完全相同的addEventListener签名,否则事件不会被删除,所以如果您将事件添加为:
// Added as
img.addEventListener('mousemove', colorCatcher, false);
// Should be removed as
img.removeEventListener('mousemove', colorCatcher, false);
// Added as
img.addEventListener('mousemove', colorCatcher);
// Should be removed as
img.removeEventListener('mousemove', colorCatcher);编辑
您需要确保定义了您的函数,例如:
function colorCatcher(){
// Actions here
}
// Added as
img.addEventListener('mousemove', colorCatcher, false);
// Should be removed as
img.removeEventListener('mousemove', colorCatcher, false);https://stackoverflow.com/questions/43401706
复制相似问题