2011-06-30 5 views
0
jQuery & JS

J'ai une liste avec des liens:Comment puis-je savoir quelle classe a été sélectionnée par

<li class="link-1"><a href="#">One</a></li> 
<li class="link-2"><a href="#">Two</a></li> 
<li class="link-3"><a href="#">Three</a></li> 
.. 

utilisateur clique sur un lien, puis avec jQuery je veux afficher le contenu du lien .. somthing comme:

$(".link-??? a").click(function() { 
    alert($(".link-??? a").html()); 
}) 

quelque chose comme ça. Je ne vais pas créer de fonction X (comme le nombre de liens), alors que puis-je faire? Je remplacer le ??? dans somtehing autre ..

Répondre

2

Vous pourrait faire:

$('li[class^="link"] a').click(... 

Cependant, cela ne fonctionne que si le li ont une seule classe ou si la classe link-X est la première dans la liste.

l'intérieur du gestionnaire, vous pouvez utiliser $(this) pour faire référence à l'élément a:

alert($(this).text()); 

Beaucoup mieux serait de donner les li éléments d'une classe commune:

<li class="link"><a href="#">One</a></li> 
<li class="link"><a href="#">Two</a></li> 
<li class="link"><a href="#">Three</a></li> 

$('.link a').click(... sera beaucoup plus fiable.

+0

Je ne l'ai jamais entendu parler '$ (this)' (bien .. Je suis en train d'apprendre un jour :-)), cela résoudra le problème (avec la classe commune). – Luis

+0

@Luis: Peut-être que vous devriez lire un tutoriel: http://docs.jquery.com/Tutorials:Getting_Started_with_jQuery Fondamentalement, dans le gestionnaire d'événements, 'this' fait référence à l'élément à l'origine de l'événement (dans ce cas le lien). Vous pouvez également passer des éléments DOM à jQuery, pas seulement des sélecteurs, et c'est ce que '$ (this)' est à propos. –

+0

Oui, maintenant je comprends ce que fait ce sélecteur. Je vous remercie. – Luis

1

Essayez ..

$(".link-??? a").click(function() { 
    alert(this.innerHTML); 
}) 

Dans l'événement click, this doit faire référence à l'élément qui a été cliqué.

Vous pouvez également faire ..

alert($(this).html()); 

..mais la première est plus simple et plus rapide.

1

Donnez à chaque élément la même classe. Puis dans votre référence javascript ceci dans votre fonction. Consultez le lien ci-dessous pour voir un exemple de travail

http://jsfiddle.net/kprgr/2/

<li class="link"><a href="#">One</a></li> 
<li class="link"><a href="#">Two</a></li> 
<li class="link"><a href="#">Three</a></li> 

$(".link").click(function() { 
    alert($(this).find("a").html()); 
}); 
Questions connexes