2012-11-20 125 views
0

我一直在重写我的脚本文件几次只是缩短了,我特地相当长,它除了有两个funcitons,合并两个功能合为一体

我想合并这些运作成一个

首先与页面加载功能,这在初始化文件准备

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

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

回答

0

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

如果这不是你所需要的,那么什么是这使得这不适合你?

+0

这两个函数正在完成这项工作,我只想将代码缩小到一个函数中,因为它们几乎完成相同的工作 – Jonas

+0

那么难度是多少?那么 - 是不是很难弄清楚/在哪里合并两个?你是要求我们为你重写你的代码吗? –

+0

不,我已经解决了,我只是想要一些指针 – Jonas