将两个函数合并为一个

时间:2012-11-20 14:10:19

标签: jquery json function

我现在已经多次重写我的脚本文件只是为了缩短它,除了两个函数之外我已经很长时间了,

我希望将这些功能合并为一个

首先使用pageload函数,初始化文档就绪

function pageload(elements, settings) {
elements = $.extend({}, defaultelements, elements || {});
settings = $.extend({}, defaultsettings, settings || {});

if( settings.url === '' ) {
    console.log('No soup for you!');
    movePage.prototype.pagein();
} else {
    $.ajax({
        url: location,
        data: {
            json: 'get_page',
            slug: settings.url
        },
        success: function(data) {
            var html = '<article id="' + data.page.slug + '" data-info="' + data.page.slug + '" class="subpage"></article>';

            if(settings.motion) return false;
                else settings.motion = true;

            elements.thumbs.before(html);
            var container = $('.subpage');
            elements.body.prepend('<div class="spinner"></div>');
            $('.spinner').hide();
            container.load(data.page.url).hide();

            elements.thumbs.stop().animate({
                'top' : '100%'
            }, settings.speed, settings.easing, function() {
                $('.spinner').fadeIn(259);
                setTimeout(function() {
                    $('.spinner').fadeOut(559);
                    setTimeout(function() {
                        container.fadeIn(659);
                    }, 450)
                    setTimeout(function() {
                        $('.spinner').remove();
                    }, 200)
                }, 1250);
                settings.motion = false;
                movePage.prototype.pagein();
            });
        }
    });
}
}

还有导航json加载脚本

function navigation(elements, settings) {
elements = $.extend({}, defaultelements, elements || {});
settings = $.extend({}, defaultsettings, settings || {});

elements.navitem.live('click', function(event) {
    event.preventDefault();

    $('.current-menu-item').removeClass('current-menu-item');
    $(this).parent().addClass('current-menu-item');

    settings.url = $(this).html();
    $.ajax({
        url: location,
        data: {
            json: 'get_page',
            slug: settings.url
        },
        success: function(data) {
            var current = $('.subpage');

            if( settings.url == 'work' ) {
                settings.motion = false;
            } else if( current.attr('id') == settings.url ) {
                settings.motion = false;
                return;
            } else {
                var html = '<article id="' + data.page.slug + '" data-info="' + data.page.slug + '" class="subpage"></article>';

                if(settings.motion) return false;
                    else settings.motion = true;

                elements.thumbs.before(html);
                var container = $('.subpage');
                elements.body.prepend('<div class="spinner"></div>');
                $('.spinner').hide();
                container.load(data.page.url).hide();

                elements.thumbs.stop().animate({
                    'top' : '100%'
                }, settings.speed, settings.easing, function() {
                    $('.spinner').fadeIn(259);
                    setTimeout(function() {
                        $('.spinner').fadeOut(559);
                        setTimeout(function() {
                            container.fadeIn(659);
                        }, 450)
                        setTimeout(function() {
                            $('.spinner').remove();
                        }, 200)
                    }, 1250);
                    settings.motion = false;
                    movePage.prototype.pagein();
                    $('article:not(#' + data.page.slug + ')').remove();
                });
            }
        }
    });
});
}

这里有人有一个解决方案,使这些功能成为我可以在页面加载和导航点击上调用的功能。

1 个答案:

答案 0 :(得分:0)

如果我正确理解你的问题...... - 定义一个命名函数,包含您需要的函数调用。 - 创建两个额外的(非常短的)函数,一个在pageload上运行,并调用较大的函数,一个在navclick上运行,并调用较大的函数

如果那不是你所需要的,那么是什么让它对你起作用呢?