スクリプトファイルを短くするために、スクリプトファイルを数回書き直しました.2つの関数を除いて、かなり長くなります.
これらを1つに統合して機能させたい
最初に 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();
});
}
}
});
});
}
これらの関数を、ページロードとナビゲーション クリックの両方で呼び出すことができる関数にするソリューションを持っている人はいますか。