如何启用/禁用鼠标移动触发的元素视差效果?(jQuery v1.11.0)
解决方案:解绑视差事件并复位元素
针对你遇到的问题,这里提供两个适配jQuery v1.11.0的简单修正方案:
方案一:改进unbind方法(推荐)
你之前的unbind操作已经能停止mousemove事件触发,只需在解绑后添加TweenMax动画,把元素复位到初始位置即可:
$('.button2').click(function(){ // 解绑section上的mousemove事件 $('section').unbind('mousemove'); // 用TweenMax将.d和.bg平滑复位到初始位置(假设初始位移为0) TweenMax.to('.d, .bg', 0.3, { x: 0, y: 0, ease: Power2.easeOut // 可选,让复位动画更自然 }); });
说明:如果你的元素初始位置不是translate(0,0),只需把x和y的值改成对应初始状态的位移数值即可。
方案二:修正off方法的使用
你之前的off方法逻辑错误——应该直接解绑section上的mousemove事件,而非在mousemove回调里操作子元素。首先要确保绑定事件时使用命名函数,这样才能精准解绑:
绑定事件的代码(第一个按钮):
// 把视差逻辑封装成命名函数 function parallaxMoveHandler(e) { parallaxIt(e, '.d', 0.3); parallaxIt(e, '.bg', 0.1); } $('.button1').click(function(){ setTimeout(function(){ // 用命名函数绑定mousemove事件 $('section').bind('mousemove', parallaxMoveHandler); }, 2500); });
解绑并复位的代码(第二个按钮):
$('.button2').click(function(){ // 解绑指定的事件处理函数 $('section').off('mousemove', parallaxMoveHandler); // 同样添加复位动画 TweenMax.to('.d, .bg', 0.3, {x: 0, y: 0}); });
为什么之前的off方法无效?
你之前的代码是在section的mousemove回调里,尝试解绑.d和.bg的mousemove事件,但这两个元素根本没有绑定过mousemove事件,自然起不到停止视差的作用。正确的做法是解绑section上绑定的视差处理函数。
内容的提问来源于stack exchange,提问作者Igor Laszlo
相关产品推荐
相关产品推荐

