2017-02-25 73 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'仍然像之前一樣顯示增量,但無濟於事。我排除三角洲不存在的第二個功能,所以我都沒有問題:( –

相關問題