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;                   
                }

            }            
        },

但它会为每个滚动动作调用两次。有没有办法阻止一个滚动动作。

4

2 回答 2

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 回答
0

您可以尝试在函数中添加e.stopImmediatePropagation();e.preventDefault();来停止第二个事件。

于 2013-11-12T11:30:51.777 回答