2016-12-01 4 views
0

以下のサンプルコードでは、コールバック関数がscrollTop()の引数として使用されています。jQuery scrollTop()はコールバック関数を受け入れますか?

http://jsfiddle.net/xjrLN/2/

パラメータ値iとVコールバックの何ですか?

jQuery(document).ready(function() { 
    var is_dragging = false; 

    $('ul').disableSelection().sortable({ 
     axis: 'y', 
     start: function() { is_dragging = true }, 
     stop: function() { is_dragging = false } 
    }).mousemove(function(e) { 
     if(is_dragging) { 
      // **** What are parameters' values i and v of the callback? ***** 
      $('ul').scrollTop(function(i, v) { 
       var h = $('ul').height(); 
       var y = e.clientY - h/2; 
       return v + y * 0.1; 
      }); 
     } 
    }); 
}); 

サンプルコードは、ポストからである Scrolling a sortable/dragable item's parent container when its border is reached

おかげ

答えて

1

まず第一に、それは、コールバック関数ではありません。 scrollTop()へのコールバックは、同期実行を確実にするために値を設定した後に起動します(animate()など)。値を設定する代わりに、たとえば$('ul').scollTop('20');関数を使用して値を計算し、値を返します。 i戻りjQueryのセレクタのセット内の現在の要素のインデックス、及びvは、その要素のscrollTop()の現在の値を返すこと

調査時とjQueryフォーラム上のフィードバックとは、それが明らかになりました。

$(window).scroll(function() { 
 
    $('body').scrollTop(function(i, v) { 
 
    console.log(i + ' ' + v); 
 
    // i == index of current element in the selector 
 
    // (zero-based of course) 
 
    // (v == $('body').scrollTop()) 
 
    }); 
 
});
body { 
 
    height: 600vh; 
 
    width: 600vw; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

+0

しかし、関数が実際に呼び出され、plsは私の更新されたコード、Vを見て、私は、コンソールに出力されます。 http://jsfiddle.net/xjrLN/131/ – thermostat

+0

@thermostat私はそれが遅すぎることに気づいた、私の編集を参照してください。 –

関連する問題