2017-02-25 20 views
2

私はマウスホイールイベントを垂直方向ではなく水平方向に動かすことができたこのスクリプトを持っています。しかし私はまたそれにいくつかの勢いを加えたいと思っていました。私は "後"機能を作成しましたが、本体の.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

悲しいことに、それはしませんでした。 2番目の関数の 'console.log'は以前と同じようにdeltaを表示しますが、役に立たなくなります。私は2番目の関数に存在しないデルタを排除したので、私はすべての問題を解決しています:( –

関連する問題