我有一个在 mousemove 事件上运行的jQuery函数。实际上,我必须将图像分开一个是主图像和一个阴影图像。我正在使用 mousemove 事件来反映阴影图像。一切正常,但是当我将鼠标悬停在主图像上时,我想停止 mousemove 事件。再次它将在我将鼠标从图像中释放时运行。我怎么能得到它。这是链接 - http://zakirinfo.com/mouse/
HTML
<div style="width:100%">
<img id="shadow-img" style="position:absolute;"src="./assets/img/slsshadow.jpg"></img>
<img id="center-img" style="position:absolute;left:50%;top:50%;margin-left:-204px;margin-top:-204px" src="./assets/img/slslogo.jpg"></img>
</div>
的jQuery
(function() {
var shadowImg = document.getElementById('shadow-img');
var centerImg = document.getElementById('center-img');
document.onmousemove = handleMouseMove;
function handleMouseMove(event) {
var center = {
x : centerImg.getBoundingClientRect().left + 204,
y : centerImg.getBoundingClientRect().top
};
console.log(center);
var shadowPos = {
x : (1.8 * center.x) - event.pageX,
y : (2.2 * center.y) - event.pageY,
};
shadowImg.style.transform = 'translate(' + shadowPos.x + 'px,' + shadowPos.y +'px)';
};
})();
答案 0 :(得分:-1)
这是工作代码(如果我理解正确的话):
(function() {
var shadowImg = document.getElementById('shadow-img');
var centerImg = document.getElementById('center-img');
document.addEventListener("mousemove", handleMouseMove);
centerImg.addEventListener("mouseenter", function() {
document.removeEventListener("mousemove", handleMouseMove);
});
centerImg.addEventListener("mouseleave", function() {
document.addEventListener("mousemove", handleMouseMove);
});
function handleMouseMove(event) {
var center = {
x : centerImg.getBoundingClientRect().left + 204,
y : centerImg.getBoundingClientRect().top
};
console.log(center);
var shadowPos = {
x : (1.8 * center.x) - event.pageX,
y : (2.2 * center.y) - event.pageY,
};
shadowImg.style.transform = 'translate(' + shadowPos.x + 'px,' + shadowPos.y +'px)';
};
})();
HTML不变。这里还有一个jsfiddle:http://jsfiddle.net/wbkdrdpk/2/
说明:
首先,我使用addEventListener来分配事件。
document.addEventListener("mousemove", handleMouseMove);
这与您的行几乎相同,但它的优点是您可以调用removeEventListener
函数来删除处理程序
现在我向图像添加两个事件监听器以删除并重新添加移动处理程序:
centerImg.addEventListener("mouseenter", function() {
document.removeEventListener("mousemove", handleMouseMove);
});
centerImg.addEventListener("mouseleave", function() {
document.addEventListener("mousemove", handleMouseMove);
});
非常简单的东西。
编辑:我删除了所有jquery代码,因为即使用#34; jquery&#34;标记了你的问题,你实际上并没有使用jquery。我删除了标签,因为它具有误导性;)