jquery.scrollev.js 2.16 KB
/**
 * @fileOverview 插件封装
 * @author qiqi.zhou@yoho.cn
 * @date 2012-10-12
 */
define('lib/util/jquery.scrollev',[ "jquery"],function(require)
{
    
    var jQuery = require("jquery");
    
    (function()
    {
        var special = jQuery.event.special, uid1 = 'D' + (+new Date()), uid2 = 'D'
                + (+new Date() + 1);
        special.scrollstart = {
            setup : function()
            {
                var timer, handler = function(evt)
                {
                    var _self = this, _args = arguments;
                    if (timer)
                    {
                        clearTimeout(timer);
                    }
                    else
                    {
                        evt.type = 'scrollstart';
                        jQuery.event.handle.apply(_self, _args);
                    }
                    timer = setTimeout(function()
                    {
                        timer = null;
                    }, special.scrollstop.latency);
                };
                jQuery(this).bind('scroll', handler)
                        .data(uid1, handler);
            },
            teardown : function()
            {
                jQuery(this).unbind('scroll', jQuery(this).data(uid1));
            }
        };
        special.scrollstop = {
            latency : 300,
            setup : function()
            {
                var timer, handler = function(evt)
                {
                    var _self = this, _args = arguments;
                    if (timer)
                    {
                        clearTimeout(timer);
                    }
                    timer = setTimeout(function()
                    {
                        timer = null;
                        evt.type = 'scrollstop';
                        jQuery.event.handle.apply(_self, _args);
                    }, special.scrollstop.latency);
                };
                jQuery(this).bind('scroll', handler)
                        .data(uid2, handler);
            },
            teardown : function()
            {
                jQuery(this).unbind('scroll', jQuery(this).data(uid2));
            }
        };
    })();
    
});