简短的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);
我做错了什么?
答案 0 :(得分:0)
在这种情况下,您不必在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);