Sélection de frères et soeurs en vol stationnaire

J’ai un code qui va comme ça en HTML:

J’aimerais y parvenir en survolant UL (avec calendrier des classes et commentaires), la couleur de la bordure pour div.entry_info et le fond de a.read_more sont modifiés via jQuery. C’est ce que j’ai cependant le second ne fonctionne pas.

  $(document).ready(function(){ $('ul.calendar').hover ( function () { $(this).nextAll('.entry_info').addClass('hover_border'); $(this).nextAll('a.read_more').addClass('more_jquery'); $(this).next('ul.commentaries').addClass('bubble_hover'); }, function () { $(this).nextAll('div.entry_info').removeClass('hover_border'); $(this).nextAll('a.read_more').removeClass('read_more_jquery'); $(this).next('ul.commentaries').removeClass('bubble_hover'); }); });  

Mon problème actuel est que tout fonctionne sauf la deuxième ligne.

C’est la ligne avec le problème:

 $(this).nextAll('a.read_more').addClass('more_jquery'); 

Je suis assez nouveau sur jQuery et j’ai essayé des frères et soeurs et tout le rest, mais ça ne marchera pas. J’ai essayé avec eq (0) qui a fonctionné, mais comment puis-je le boucler? La raison pour laquelle je vais avec des classes et pas avec ID est parce que c’est une boîte qui se répète plusieurs fois.

Merci pour votre aide.

Pourquoi ne pas simplement utiliser CSS?

 ul.calendar:hover ~ .entry_info { // selects all .entry_info's which are on the same level (siblings) as the ul.calender which is hovered over } 

BTW, je suis sûr que la fonction $ magique de jQuery prend également en charge le combinateur général de frères et sœurs, donc $("item ~ sibling") devrait fonctionner parfaitement:

 $("...").hover(function() { $("... ~ siblings"); } 

Voir:

Cela ne fonctionne pas car nextAll obtient tous les frères et sœurs en fonction du sélecteur. Votre lien hypertexte n’est pas un frère. À la place, vous pouvez utiliser find pour rechercher le lien dans entry_info.

http://jsfiddle.net/U7hNS/

   

 $('ul.calendar').hover ( function () { $(this).nextAll('.entry_info').addClass('hover_border'); $(this).nextAll('.entry_info').find('a.read_more').addClass('more_jquery'); $(this).next('ul.commentaries').addClass('bubble_hover'); }, function () { $(this).nextAll('div.entry_info').removeClass('hover_border'); $(this).nextAll('.entry_info').find('a.read_more').removeClass('more_jquery'); $(this).next('ul.commentaries').removeClass('bubble_hover'); });