2009-10-07 7 views
0

Im en utilisant les éléments suivants:problème de Jquery slideToggle

$(function() { 
    $(".StaffSubjectClassNav ul").hide(); 
     $('.StaffSubjectClassNav h3').click(function(){ 
     $(this).toggleClass('clicked'); 
     $(this).next('ul').slideToggle('100'); 
    }); 
}); 

Sur le code HTML suivant:

<h3><a href="link">Link</a></h3> 
<ul> 
<li>Link1</li> 
<li>Link2</li> 
<li>Link3</li> 
</ul> 

Il fonctionne parfaitement, se cache le <UL> et montre quand je clique sur le <H3>.

Cependant <a> est aussi un lien, comment puis-je configurer le script afin que s'ils cliquent sur le <a> dans la <H3> il ne fonctionne pas slideToggle?

+0

Ne pensez-vous pas que c'est un peu déroutant pour l'utilisateur? – Gumbo

+0

Il ne fait pas cela pour moi - en cliquant sur le lien va juste au lien (à la fois dans IE et Firefox). En dehors de cela, je suis d'accord avec Gumbo - c'est assez déroutant du point de vue de la convivialité. –

+0

Pas vraiment de la façon dont c'est présenté. – CLiown

Répondre

0

Enveloppez le h3 dans le a et ajoutez l'action au lien et renvoyez false. Par exemple:

JS:

$(function() { 
    $(".StaffSubjectClassNav ul").hide(); 
    $('#h3_link').click(function(){ 
     $(this).toggleClass('clicked'); 
     $(this).next('ul').slideToggle('100'); 
     return false; 
    }); 
}); 

HTML:

<a href="link" id="h3_link"><h3>Link</h3></a> 
<ul> 
    <li>Link1</li> 
    <li>Link2</li> 
    <li>Link3</li> 
</ul> 

Vous pourriez avoir juste besoin de changer votre CSS un peu. Mais, c'est la bonne façon de le faire. Les liens sont censés être cliqués, pas les tags H3.

+0

L'élément 'A' n'autorise pas les éléments de niveau bloc tels que' H3' en tant qu'enfant. – Gumbo