2016-08-23 3 views
1

Je cet élément de liste dans mon nav, il a un menu déroulantvol stationnaire sur deux éléments mis en effet à un élément

<li class="projects"> 
     <a href="#">Projects</a> 
     <i class="fa fa-angle-down" aria-hidden="true"></i> 
     <ul class="list-unstyled myDropDown"> 
      <li><a href="#">King SALEH Bridge</a></li> 
      <li><a href="#">Internationl future schools</a></li> 
      <li><a href="#">Elwakeel Companies Group</a></li> 
     </ul> 
</li> 

et est ici les styles

nav .myDropDown{ 
    display:none; 
    position:absolute; 
    min-height:160px; 
    background-color:#ffb700; 
    top:calc(15px + 100%) 
} 

et je veux afficher .myDropDown lors du survol de li.projects et il est toujours affiché lors du survol de .myDropDown lui-même, et disparaît lorsque la souris n'est plus dans li.projects ou .myDropDown.

J'ai ce code jquery, mais ça ne marche pas?!

$("nav .projects").hover(function(){ 
    $("nav .myDropDown").css("display","block"); 
}); 
$("nav .myDropDown").hover(function(){ 
      $(this).css("display","block"); 
    },function(){ 
      $(this).css("display","none"); 
}); 
+0

pourquoi u juste ne pas utiliser pour cela pur css? – pumpkinzzz

+0

votre navigation ne figure pas dans l'OP – guradio

+0

j'ai essayé de le faire, mais cela ne fonctionne pas .. nav ul li.projects: hover .myDropDown { display: block } nav .myDropDown: vol stationnaire { display: block } – Abdallah

Répondre

2

Vous devriez probablement utiliser les réponses CSS fournies. Mais si vous voulez utiliser javascript vous devriez le faire comme ceci:

$("nav .projects").hover(function(){ 
    $(this).find(".myDropDown").css("display","block"); 
}, function(){ 
    $(this).find(".myDropDown").css("display","none"); 
}); 

Vous ne pouvez pas garder le top:calc(15px + 100%) si vous voulez qu'il se chevauchent. Si vous maintenez un écart entre la liste déroulante et le lien, vous le supprimez avant de l'entrer. C'est la même chose avec la solution CSS.

https://jsfiddle.net/80tbzcjh/1/

+0

merci mec j'apprécie votre réponse, c'est très utile, ça fonctionne bien https://jsfiddle.net/80tbzcjh/2/ – Abdallah

1

utilisation de cette façon

li:hover .myDropDown{dispaly:block;} 
+0

nav ne fonctionne pas bro parce que ul.myDropDown a la position absolue et lorsque hover sur li.projects, le menu déroulant affiché, mais lorsque hover sur le ul.myDropDown lui-même il disparaît parce que vous avez quitté la souris sur li.projects – Abdallah

2

Pourquoi non seulement CSS?

ul.myDropDown{ 
 
    display: none; 
 
} 
 

 
li.projects:hover > ul.myDropDown{ 
 
    display: block; 
 
}
<li class="projects"> 
 
     <a href="#">Projects</a> 
 
     <i class="fa fa-angle-down" aria-hidden="true"></i> 
 
     <ul class="list-unstyled myDropDown"> 
 
      <li><a href="#">King SALEH Bridge</a></li> 
 
      <li><a href="#">Internationl future schools</a></li> 
 
      <li><a href="#">Elwakeel Companies Group</a></li> 
 
     </ul> 
 
</li>

EDIT: J'ai changé votre valeur supérieure et il fonctionne:

li.projects { 
 
position: relative; 
 
} 
 

 
ul.myDropDown{ 
 
    display:none; 
 
    position:absolute; 
 
    min-height:160px; 
 
    background-color:#ffb700; 
 
    top: 0px; 
 
} 
 

 
li.projects:hover > ul.myDropDown{ 
 
    display: block; 
 
}
<li class="projects"> 
 
     <a href="#">Projects</a> 
 
     <i class="fa fa-angle-down" aria-hidden="true"></i> 
 
     <ul class="list-unstyled myDropDown"> 
 
      <li><a href="#">King SALEH Bridge</a></li> 
 
      <li><a href="#">Internationl future schools</a></li> 
 
      <li><a href="#">Elwakeel Companies Group</a></li> 
 
     </ul> 
 
</li>

+0

il ne fonctionne pas bro parce que ul.myDropDown a la position absolue et lorsque hover sur li.projects, le menu déroulant affiché, mais lorsque hover sur le ul .myDropDown lui-même disparaître parce que vous partez d la souris sur li.projects – Abdallah

+0

Maintenant avec le top: 0? Le problème est que vous étiez en train de le déplacer absolument au bas de la page et l'écart entre les deux éléments est compté comme "pas planer", donc il disparaît. –

+0

oui, le problème était dans la propriété supérieure, ça fonctionne bien maintenant merci beaucoup bro – Abdallah