2010-10-05 22 views
1

J'ai un élément LI avec un lien, et d'autres liens à l'intérieur.Eviter aller au lien de l'élément de bloc en cliquant sur le lien à l'intérieur

Ce serait quelque chose comme ceci:

jQuery:

$('li').click(function() { 
    window.location = $(this).children('a.li-url').attr('href'); 
}); 

HTML:

<ul> 
    <li> 
     <a href="http://www.link.com" class="li-url"></a> 
     <h1>Title</h1> 
     Lorem ipsum dolor <a href="http://www.something.com">Something</a>. Etc, blah blah. 
    </li> 
</ul>​ 

Le problème est que lorsque je clique sur "quelque chose", il charge aussi www. link.com (vous pouvez le voir si vous cliquez sur le lien Quelquechose alt +, il chargera quelquechose.com dans un nouvel onglet tout en chargeant link.com dans votre onglet actuel.)

Je dois seulement charger quelque chose quand je clique sur "quelque chose" ..

Merci!

+0

Je crois que vous avez déjà posé cette question il y a 1 heure http://stackoverflow.com/q/3859918/459897 –

+0

Pourquoi avez-vous une fonction javascript quand même? – Pavan

Répondre

1
$('li').click(function(e) { 
    if (e.target.tagName.toLowerCase() == 'li') { 
     window.location = $(this).children('a.li-url').attr('href'); 
    } 
});​ 

crazy demo


Bienvenue sur stackoverflow.com
Ne pas oublier d'accepter une réponse

+0

Merci! Ça marche. Savez-vous s'il est possible de charger le lien LI dans un nouvel onglet par alt + clic, comme un lien normal? – Santiago

-1

essayez this.preventDefault();

+0

MERCI! Cela fonctionne parfaitement. Une dernière chose, il serait possible de permettre de charger le lien LI dans un nouvel onglet par alt + clic, comme un lien normal? – Santiago

+0

Désolé, que preventDefault a également brisé le lien LI ... Donc, ne fonctionne pas très bien. – Santiago

+0

Ce n'est pas ce que preventDefault() fera. – Strelok

1

Ajouter ce morceau de JS.

$('li a:not(.li-url)').click(function() { 
    event.stopPropagation(); 
}); 
​ 

En utilisant mon sélecteur ou quelque chose d'autre pour cibler l'autre lien dans la li.