onscroll事件为div标签调用两次

时间:2013-11-12 11:26:37

标签: javascript jquery html

我使用以下代码片段将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 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分: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;                   
                }

            }    
    }