0

onscroll イベントを div にバインドするために、次のコード スニペットを使用しました。

$div.bind("scroll", $.proxy(this._onScroll, this));

_onScroll: function (e) {
            if (this.model.enableVirtualization) {                
                var contentdiv = $(".ganttgridtreecontent");
                   this._scrollTop = contentdiv.scrollTop();
                var vScrollDist = Math.abs(this._scrollTop - this._prevScrollTop);                            
                if (vScrollDist) {
                    vScrollDir = this._prevScrollTop < this._scrollTop ? 1 : -1;                    
                    this._updateCurrentViewRange();                                                            
                    this._prevScrollTop = this._scrollTop;                   
                }

            }            
        },

ただし、スクロール アクションごとに 2 回呼び出されます。1回のスクロール操作を防ぐ方法はありますか?

4

2 に答える 2

0

e.stopImmediatePropagation();関数にandを追加しe.preventDefault();て、2 番目のイベントを停止することができます。

于 2013-11-12T11:30:51.777 に答える
0

問題はにあるよう$div.bind("scroll", $.proxy(this._onScroll, this));です。div タグに OnScroll を追加するだけではどうですか。

<div id="Scrollable content" OnScroll="Scrollfunction()">

次に、JavaScript で関数を定義します。

    function Scrollfunction()
    {
 if (this.model.enableVirtualization) {                
                var contentdiv = $(".ganttgridtreecontent");
                   this._scrollTop = contentdiv.scrollTop();
                var vScrollDist = Math.abs(this._scrollTop - this._prevScrollTop);                            
                if (vScrollDist) {
                    vScrollDir = this._prevScrollTop < this._scrollTop ? 1 : -1;                    
                    this._updateCurrentViewRange();                                                            
                    this._prevScrollTop = this._scrollTop;                   
                }

            }    
    }
于 2013-11-12T11:33:03.323 に答える