这不是一个直接的问题,而是一个关于如何通过压缩我的代码并以更合理的方式编写来改进我的javascript的问题。
基本上我只是用jQuery写了一些javascript,以便在我的网站上创建一些投资组合动画。您可以在此处查看投资组合和动画:
http://www.saelstrom.com/portfolio/full-portfolio
我想要完成的一切似乎都有效。但是我只是觉得这可能是用很少的代码编写的。我可能错了,但我想我会把问题放在那里以防万一有任何专家想在下次我写一些javascript时指出正确的方向。
这是我的脚本:
$(document).ready(function() {
// ------------------------------------------------------
// - Create jQuery Function - Fade Then Slide Toggle
// ------------------------------------------------------
jQuery.fn.fadeThenSlideToggle = function(speed, callback) {
if (this.is(":visible")) {
return this.fadeTo(speed, 0).slideUp(speed, callback);
} else {
return this.slideDown(speed).fadeTo(speed, 1, callback);
}
};
// ------------------------------------------------------
// - Portfolio Item Collapse
// ------------------------------------------------------
$('.folio-item').click(function(){
collapse = $(this).find('.folio-collapse');
collapse.slideToggle('slow',function(){
if($(this).is(':visible')){
$(this).parent().addClass('open');
}
else
{
$(this).parent().removeClass('open');
}
});
});
// ------------------------------------------------------
// - Portfolio Item Hover
// ------------------------------------------------------
$('.folio-item').hover(function(){
hoveritem = $(this).find('.hover-item');
hoveritem.fadeIn('fast');
},
function(){
hoveritem = $(this).find('.hover-item');
hoveritem.fadeOut('fast');
});
$('.folio-screen').hover(function(){
hoveritem = $(this).find('.launch');
hoveritem.fadeIn('fast');
},
function(){
hoveritem = $(this).find('.launch');
hoveritem.fadeOut('fast');
});
// ------------------------------------------------------
// - Portfolio Show/Hide Section Wrappers
// ------------------------------------------------------
// - Web Design - Click Function
$('li.port-web').click(function(){
if($('.web-wrapper').is(':visible')){
// Do Nothing
}
else if($('.marketing-wrapper').is(':visible')){
// Remove 'active' Class
$(this).parent().find('li.port-marketing').removeClass('active');
// Add Class 'active'
$(this).parent().find('li.port-web').addClass('active');
// Hide Marketing Wrapper
$('.marketing-wrapper').fadeThenSlideToggle('slow',function(){
// Show Web Wrapper
$('.web-wrapper').fadeThenSlideToggle('slow');
});
}
else if($('.branding-wrapper').is(':visible')){
// Remove 'active' Class
$(this).parent().find('li.port-branding').removeClass('active');
// Add Class 'active'
$(this).parent().find('li.port-web').addClass('active');
// Hide Branding Wrapper
$('.branding-wrapper').fadeThenSlideToggle('slow',function(){
// Show Web Wrapper
$('.web-wrapper').fadeThenSlideToggle('slow');
});
}
else if($('.landing-wrapper').is(':visible')){
// Remove 'active' Class
$(this).parent().find('li.port-landing').removeClass('active');
// Add Class 'active'
$(this).parent().find('li.port-web').addClass('active');
// Hide Landing Wrapper
$('.landing-wrapper').fadeThenSlideToggle('slow',function(){
// Show Web Wrapper
$('.web-wrapper').fadeThenSlideToggle('slow');
});
}
});
// - Internet Marketing - Click Function
$('li.port-marketing').click(function(){
if($('.marketing-wrapper').is(':visible')){
// Do Nothing
}
else if($('.web-wrapper').is(':visible')){
// Remove 'active' Class
$(this).parent().find('li.port-web').removeClass('active');
// Add Class 'active'
$(this).parent().find('li.port-marketing').addClass('active');
// Hide Web Wrapper
$('.web-wrapper').fadeThenSlideToggle('slow',function(){
// Show Marketing Wrapper
$('.marketing-wrapper').fadeThenSlideToggle('slow');
});
}
else if($('.branding-wrapper').is(':visible')){
// Remove 'active' Class
$(this).parent().find('li.port-branding').removeClass('active');
// Add Class 'active'
$(this).parent().find('li.port-marketing').addClass('active');
// Hide Branding Wrapper
$('.branding-wrapper').fadeThenSlideToggle('slow',function(){
// Show Marketing Wrapper
$('.marketing-wrapper').fadeThenSlideToggle('slow');
});
}
else if($('.landing-wrapper').is(':visible')){
// Remove 'active' Class
$(this).parent().find('li.port-landing').removeClass('active');
// Add Class 'active'
$(this).parent().find('li.port-marketing').addClass('active');
// Hide Landing Wrapper
$('.landing-wrapper').fadeThenSlideToggle('slow',function(){
// Show Marketing Wrapper
$('.marketing-wrapper').fadeThenSlideToggle('slow');
});
}
});
// - Branding - Click Function
$('li.port-branding').click(function(){
if($('.branding-wrapper').is(':visible')){
// Do Nothing
}
else if($('.web-wrapper').is(':visible')){
// Remove 'active' Class
$(this).parent().find('li.port-web').removeClass('active');
// Add Class 'active'
$(this).parent().find('li.port-branding').addClass('active');
// Hide Web Wrapper
$('.web-wrapper').fadeThenSlideToggle('slow',function(){
// Show Branding Wrapper
$('.branding-wrapper').fadeThenSlideToggle('slow');
});
}
else if($('.landing-wrapper').is(':visible')){
// Remove 'active' Class
$(this).parent().find('li.port-landing').removeClass('active');
// Add Class 'active'
$(this).parent().find('li.port-branding').addClass('active');
// Hide Landing Wrapper
$('.landing-wrapper').fadeThenSlideToggle('slow',function(){
// Show Branding Wrapper
$('.branding-wrapper').fadeThenSlideToggle('slow');
});
}
else if($('.marketing-wrapper').is(':visible')){
// Remove 'active' Class
$(this).parent().find('li.port-marketing').removeClass('active');
// Add Class 'active'
$(this).parent().find('li.port-branding').addClass('active');
// Hide Marketing Wrapper
$('.marketing-wrapper').fadeThenSlideToggle('slow',function(){
// Show Branding Wrapper
$('.branding-wrapper').fadeThenSlideToggle('slow');
});
}
});
// - Landing Pages - Click Function
$('li.port-landing').click(function(){
if($('.landing-wrapper').is(':visible')){
// Do Nothing
}
else if($('.web-wrapper').is(':visible')){
// Remove 'active' Class
$(this).parent().find('li.port-web').removeClass('active');
// Add Class 'active'
$(this).parent().find('li.port-landing').addClass('active');
// Hide Web Wrapper
$('.web-wrapper').fadeThenSlideToggle('slow',function(){
// Show Landing Wrapper
$('.landing-wrapper').fadeThenSlideToggle('slow');
});
}
else if($('.branding-wrapper').is(':visible')){
// Remove 'active' Class
$(this).parent().find('li.port-branding').removeClass('active');
// Add Class 'active'
$(this).parent().find('li.port-landing').addClass('active');
// Hide Branding Wrapper
$('.branding-wrapper').fadeThenSlideToggle('slow',function(){
// Show Landing Wrapper
$('.landing-wrapper').fadeThenSlideToggle('slow');
});
}
else if($('.marketing-wrapper').is(':visible')){
// Remove 'active' Class
$(this).parent().find('li.port-marketing').removeClass('active');
// Add Class 'active'
$(this).parent().find('li.port-landing').addClass('active');
// Hide Marketing Wrapper
$('.marketing-wrapper').fadeThenSlideToggle('slow',function(){
// Show Landing Wrapper
$('.landing-wrapper').fadeThenSlideToggle('slow');
});
}
});
});
答案 0 :(得分:1)
对于一个你可以使用更多链接:
// ------------------------------------------------------
// - Portfolio Item Collapse
// ------------------------------------------------------
$('.folio-item').click(function(){
collapse = $(this).find('.folio-collapse').slideToggle('slow',function(){
if($(this).is(':visible')){
$(this).parent().addClass('open');
}
else
{
$(this).parent().removeClass('open');
}
});
});
// ------------------------------------------------------
// - Portfolio Item Hover
// ------------------------------------------------------
$('.folio-item').hover(function(){
hoveritem = $(this).find('.hover-item').fadeIn('fast');
},
function(){
hoveritem = $(this).find('.hover-item').fadeOut('fast');
});
$('.folio-screen').hover(function(){
hoveritem = $(this).find('.launch').fadeIn('fast');
},
function(){
hoveritem = $(this).find('.launch').fadeOut('fast');
});
您可以删除多余的代码:
/* ALL THIS CODE CAN GO AWAY */
if($('.marketing-wrapper').is(':visible')){
// Do Nothing
}
if($('.web-wrapper').is(':visible')){
// Do Nothing
}
if($('.branding-wrapper').is(':visible')){
// Do Nothing
}
if($('.landing-wrapper').is(':visible')){
// Do Nothing
}
这还不错。我从那里开始。你的评论占用了大量的空间,可能会产生冗长的幻觉:)