2017-10-10 5 views
1

Je sais que la solution est trop stupide mais je ne la trouve pas:/ Je cherche à simplifier ce code js.Comment simplifier cela js?

mais je cherche surtout à comprendre si vous avez un lien pour apprendre la simplification.

je commence la JS alors ne me juge pas trop;)

Merci à l'avance.

code Js:

$('#img1, #menu1').hover(
    function() { 
     $('#menu1').toggleClass("activeMenu"); 
     $('#img1').toggleClass("activeImg"); 
}); 

$('#img2, #menu2').hover(
    function() { 
     $('#menu2').toggleClass("activeMenu"); 
     $('#img2').toggleClass("activeImg"); 
}); 
$('#img3, #menu3').hover(
    function() { 
     $('#menu3').toggleClass("activeMenu"); 
     $('#img3').toggleClass("activeImg"); 
}); 
$('#img4, #menu4').hover(
    function() { 
     $('#menu4').toggleClass("activeMenu"); 
     $('#img4').toggleClass("activeImg"); 
}); 
$('#img5, #menu5').hover(
    function() { 
     $('#menu5').toggleClass("activeMenu"); 
     $('#img5').toggleClass("activeImg"); 
}); 

Code HTML:

<ul>    
    <li id="menu1">Module Accueil</li> 
    <li id="menu2">Module Produit</li> 
    <li id="menu3">Module Diaporama</li> 
    <li id="menu4">Module Article</li> 
    <li id="menu5">Module Contact</li> 
</ul> 
<img id="img1" src="/themes/courant/images/image1"> 
<img id="img2" src="/themes/courant/images/image2"> 
<img id="img3" src="/themes/courant/images/image3"> 
<img id="img4" src="/themes/courant/images/image4"> 
<img id="img5" src="/themes/courant/images/image5"> 
+2

Vous n'êtes pas sur le bon site pour poser. Allez sur la section de révision de code – Alexis

+5

https://codereview.stackexchange.com/ – DontVoteMeDown

+0

D'un coup d'oeil, je suppose que vous pouvez convertir tout ce que JS en CSS ': hover' .. – vsync

Répondre

0

Vous pouvez extraire une fonction commune comme ci-dessous pour réduire le code en double et ont une fonction commune à faire la logique.

function onHoverCall(selector1,selector2,selector3){ 
 
    $(selector).hover(
 
     function() { 
 
      $(selector2).toggleClass("activeMenu");//you can change these as well 
 
      $(selector3).toggleClass("activeImg"); 
 
    }); 
 
} 
 
/*$('#img1, #menu1').hover(
 
    function() { 
 
     $('#menu1').toggleClass("activeMenu"); 
 
     $('#img1').toggleClass("activeImg"); 
 
});*/ 
 
onHoverCall('#img1, #menu1','#menu1','#img1');
<li id="menu1">Module Accueil</li> 
 
    <li id="menu2">Module Produit</li> 
 
    <li id="menu3">Module Diaporama</li> 
 
    <li id="menu4">Module Article</li> 
 
    <li id="menu5">Module Contact</li> 
 
</ul> 
 
<img id="img1" src="/themes/courant/images/image1"> 
 
<img id="img2" src="/themes/courant/images/image2"> 
 
<img id="img3" src="/themes/courant/images/image3"> 
 
<img id="img4" src="/themes/courant/images/image4"> 
 
<img id="img5" src="/themes/courant/images/image5">

+0

Merci beaucoup :) mais j'ai ceci: c'est possible simplifier aussi? onHoverCall ('# img1, # menu1', '# menu1', '# img1'); onHoverCall ('# img2, # menu2', '# menu2', '# img2'); onHoverCall ('# img3, # menu3', '# menu3', '# img3'); onHoverCall ('# img4, # menu4', '# menu4', '# img4'); onHoverCall ('# img5, # menu5', '# menu5', '# img5'); – Krash

+0

vous pouvez avoir ces id dans une variable et les utiliser partout –

1

Essayez simplement

$('ul li[id^=]').hover(function() { 
    $(this).toggleClass("activeMenu"); 
}); 
$('img[id^="img"]').hover(function() { 
    $(this).toggleClass("activeImg"); 
}); 
+0

merci pour vos réponses – Krash