2013-03-19 6 views
0

J'ai un code javascript qui fait à peu près la même chose plusieurs fois. Y at-il un moyen de faire une fonction pour nettoyer cela un peu?Nettoyez mon javascript en utilisant une fonction

Les deux choses que je voudrais faire en fonction sont:

lumineux()

$(VARIABLE).find('.info').fadeTo('fast', 1); 
$(VARIABLE).find('img').fadeTo('fast', 1); 

lumière()

$(VARIABLE).find('.info').fadeTo('fast', 0); 
$(VARIABLE).find('img').fadeTo('fast', 0.8); 

. Je veux être en mesure de transmettre une variable à la fonction afin que je puisse changer cette partie spécifique. Je suis nouveau sur javascript, donc je ne poserai ce genre de question qu'une fois. Merci d'avance.

$(document).ready(function(){ 
var subject; 
$('.subject').mouseenter(function(){ 
    if ($(this).hasClass(subject)) { 
     return 0; 
    } 
    else { 
     $(this).find('.info').fadeTo('fast', 1); 
     $(this).find('img').fadeTo('fast', 1); 
    } 
}); 
$('.subject').mouseleave(function(){ 
    if ($(this).hasClass(subject)) { 
     return 0; 
    } 
    else { 
     $(this).find('.info').fadeTo('fast', 0); 
     $(this).find('img').fadeTo('fast', 0.8); 
    } 
}); 


$('.english-link').click(function(){ 
    subject = 'english'; 
    $('.english').find('.info').fadeTo('fast', 1); 
    $('.english').find('img').fadeTo('fast', 1); 
}); 
$('.math-link').click(function(){ 
    subject = 'math'; 
    $('.math').find('.info').fadeTo('fast', 1); 
    $('.math').find('img').fadeTo('fast', 1); 
}); 
$('.electives-link').click(function(){ 
    subject = 'electives'; 
    $('.electives').find('.info').fadeTo('fast', 1); 
    $('.electives').find('img').fadeTo('fast', 1); 
}); 
$('.history-link').click(function(){ 
    subject = 'history'; 
    $('.history').find('.info').fadeTo('fast', 1); 
    $('.history').find('img').fadeTo('fast', 1); 
}); 
$('.science-link').click(function(){ 
    subject = 'science'; 
    $('.science').find('.info').fadeTo('fast', 1); 
    $('.science').find('img').fadeTo('fast', 1); 
}); 
$('.languages-link').click(function(){ 
    subject = 'languages'; 
    $('.languages').find('.info').fadeTo('fast', 1); 
    $('.languages').find('img').fadeTo('fast', 1); 
}); 
}); 
+2

cette sorte de "nettoyage" est appelé extrait Méthode refactoring. – Natrium

Répondre

2

Utilisation:

$(VARIABLE).find('.info, img').fadeTo('fast', 1); 

Au lieu de:

$(VARIABLE).find('.info').fadeTo('fast', 1); 
$(VARIABLE).find('img').fadeTo('fast', 1); 

Cela peut être une utilisation en général click sur .english-link, etc .. .math-link

$('[class$=-link]').click(function(){ 
    subject = $(this).attr('class').replace("-link",""); 
    $('.'+ subject).find('.info, img').fadeTo('fast', 1); 
}); 
+0

Je comprends comment cela fonctionne pour la plupart. Je ne veux pas simplement copier et coller du code que je ne comprends pas complètement. Pourriez-vous expliquer la première ligne? '$ ('[class $ = - link]')' –

+0

Bien sûr .., Il obtient tous les éléments dont le nom 'class' se termine par' -link'. Voir ** [ici] (http://api.jquery.com/category/selectors/) ** pour plus de détails et d'autres options de sélection similaires – Anujith

2

A fonction dans JavaScri pt ressemble à ceci:

function myFunction(myParameter, mySecondParameter) 
    console.log('You can now use data that was passed to the function through ' + myParameter); 
} 

var passAVariable = 5; 
myFunction('passingastring',passAVariable); 

Essayez ceci:

$('.languages-link').click(function(){ 
    yourfunction('languages', true); 
}); 

function yourfunction(subject, on){ 
    if (on) { 
     $('.' + subject).find('.info, img').fadeTo('fast', 1); 
    } else { 
     $('.' + subject).find('.info').fadeTo('fast', 0); 
     $('.' + subject).find('img').fadeTo('fast', 0.8); 
    } 
} 
+0

Est-ce que je mets la fonction en dehors de $ (document) .ready? Quelle est la meilleure pratique pour placer des fonctions? Le début ou la fin du script? –

+0

Je mets mes fonctions dans la fonction $ (document) .ready(), je ne suis pas sûr de ce qui se passera si vous le mettez dehors. – Bill

Questions connexes