2017-02-25 213 views
2

我有这段脚本,我设法使mousewheel事件水平移动页面而不是垂直。但我也想给它增加一些动力。我创建了“后”功能,但身体的.scrollLeft不会运行。为什么.scrollLeft不能在超时功能中工作?

var rate = 150; 

$(function() { 
    $("body").mousewheel(function (event, delta) { 
     function after() { 
      $("body").scrollLeft -= (delta * 1000); 
      console.log(delta); 
      event.preventDefault(); 
     }; 

     this.scrollLeft -= (delta * rate); 
     event.preventDefault(); 

     setTimeout(function() { 
      after(delta, event) 
     }, 3000); 
    }); 
}); 

我看到它的方式,在3秒后身体应与(delta * 1000)的速度移动,但它并不适用于某些原因。

+0

你的“后”函数不带任何参数? – pooyan

+0

它确实,after函数中的'console.log'是专门用来查看它是否获取参数。该脚本的第一次迭代在这个意义上是不正确的(因此编辑) –

回答

0

我希望这会工作(不知道)

var rate = 150; 

$(function() { 
$("body").mousewheel(function (event, delta) { 
    function after(event, delta) { 
     $("body").scrollLeft -= (delta * 1000); 
     console.log(delta); 
     event.preventDefault(); 
    }; 

    this.scrollLeft -= (delta * rate); 
    event.preventDefault(); 

    setTimeout(function() { 
     after(event, delta) 
    }.bind(null,event, delta), 3000); 
}); 
}); 
+0

可悲的是,它没有。第二个函数中的'console.log'仍然像之前一样显示增量,但无济于事。我排除三角洲不存在的第二个功能,所以我都没有问题:( –

相关问题