Javascript jQuery scrollTop如果URL有哈希

Javascript jQuery scrollTop如果URL有哈希,javascript,jquery,plugins,jquery-plugins,Javascript,Jquery,Plugins,Jquery Plugins,我编写了这个简单的插件,它可以平滑地滚动浏览器窗口,并将哈希链接添加到URL $.fn.extend({ scrollWindow: function(options) { var defaults = { duration: "slow", easing : "swing" } var options = $.extend(defaults, options); return this.each(fun

我编写了这个简单的插件,它可以平滑地滚动浏览器窗口,并将哈希链接添加到URL

$.fn.extend({
    scrollWindow: function(options) {
        var defaults = { duration: "slow", easing : "swing" }                 
        var options =  $.extend(defaults, options);
        return this.each(function() {             
            $(this).click(function(e) {
                var target = $(this).attr('href');
                $('html,body').animate({scrollTop: $(target).offset().top}, options.duration, options.easing, function() {
                    location.hash = target;
                });
                e.preventDefault();
            });

        });
    }
});
如果这个插件在DOM中的URL中有一个哈希,我如何扩展它,使它自动向下滚动到页面的某个部分


通过使用
window.location.hash
,我已经了解了这是如何工作的,尽管我不清楚在插件中的什么地方最好添加它。

将函数存储在一个单独的变量中,如果hash存在,则调用该函数。我已经实现了您的请求,因此每次调用
$()时都会使用当前的
位置.hash
。scrollWindow
。其他实现遵循相同的原则

$.fn.extend({
    scrollWindow: function(options) {
        var defaults = { duration: "slow", easing : "swing" }                 
        var options =  $.extend(defaults, options);
        var goToHash = function(target){
            $('html,body').animate({scrollTop: $(target).offset().top}, options.duration, options.easing, function() {
                location.hash = target;
            });
        };
        if(location.hash.length > 1) goToHash(location.hash);
        return this.each(function() {             
            $(this).click(function(e) {
                //Remove junk before the hash if the hash exists:
                var target = $(this).attr('href').replace('^([^#]+)#','#');
                goToHash(target);
                e.preventDefault();
            });

        });
    }
});