2013-05-20 1 views
3

J'utilise return false pour arrêter le lancement d'un lien parent. Le lien parent est utilisé pour ouvrir la liste déroulante.Renvoie false sur le parent uniquement

Le problème que j'ai est ce retour faux est également la définition de retour false pour les enfants dans la liste déroulante.

Comment puis-je définir uniquement le lien parent à false et tous les enfants sont liés à true?

jQuery:

$('#account').on('click', function() { 
    $('#account-options').fadeIn('slow'); 
    $(document).one('click', function() { 
     $("#account-options").fadeOut('slow'); 
    }); 
    return false; 
}); 

$("#account-options").on('click', function() { 
    return false; 
}); 

HTML:

<li id="account"><a href="/account">Your Account</a> 
    <ul id="account-options"> 
     <li><a href="">test1</a></li> 
     <li><a href="">test2</a></li> 
    </ul> 
</li> 

Merci.

Répondre

5

vous utilisez dans la propagation des événements. Lorsque vous cliquez sur l'un des <a> éléments dans #account-options il fait une bulle jusqu'à #account-options, en exécutant son gestionnaire d'événements click, puis à son tour à #account, en exécutant son gestionnaire d'événements, les deux qui empêchent le comportement par défaut de l'événement (dans ce cas, suivant le lien). Vous devez arrêter la propagation de l'événement au niveau <a>:

$('#account-options a').on('click', function(e) { 
    e.stopPropagation(); 
}); 

jsFiddle demo

0

Essayez ceci:

$("#account-options>li").on('click', function() { 
    return true; 
}); 

Salutations,

+0

Merci, mais essayé cela déjà et il ne fonctionne pas. – ccdavies

Questions connexes