diff --git a/demo/index.html b/demo/index.html index b77fad8..7b6ae64 100644 --- a/demo/index.html +++ b/demo/index.html @@ -11,7 +11,8 @@ $('#page_holder').pagify({ pages: ['about', 'usage', 'options'], animation: 'fadeIn', - default: 'about' + default: 'about', + cache: true }); }); diff --git a/pagify.js b/pagify.js index 2d4468e..787d9d5 100644 --- a/pagify.js +++ b/pagify.js @@ -19,26 +19,43 @@ }; this.settings = $.extend({}, this.defaults, options); - this.switchPage = function(page) { - page = page || window.location.hash.replace('#',''); + // Run after loading if caching, otherwise run immediately + var runAfterLoading = function() { + self.switchPage = function(page) { + page = page || window.location.hash.replace('#',''); - if(self.settings.cache) { - - } else { - $.get(page+'.html', function(content) { - $(self).hide().html(content)[self.settings.animation](); - }, 'text'); + if(self.settings.cache) { + $(self).hide().html(self.pages[page])[self.settings.animation](); + } else { + $.get(page+'.html', function(content) { + $(self).hide().html(content)[self.settings.animation](); + }, 'text'); + } } - } + + // Respond to hash changes + $(window).bind('hashchange', function() { + self.switchPage(); + }); - // Respond to hash changes - $(window).bind('hashchange', function() { - self.switchPage(); - }); + // Load initial page - current hash or default page + if(window.location.hash) self.switchPage(); + else if(self.settings.default) self.switchPage(self.settings.default); - // Load initial page - current hash or default page - if(window.location.hash) self.switchPage(); - else if(this.settings.default) self.switchPage(this.settings.default); + }; + + // Cache pages + if(self.settings.cache) { + self.pages = {}; + var pageLoads = self.settings.pages.length; + $.each(self.settings.pages, function(ndx, page) { + $.get(page+'.html', function(content) { + self.pages[page] = content; + pageLoads--; + if(!pageLoads) runAfterLoading(); + }, 'text'); + }); + } else runAfterLoading(); }; })(jQuery);