2010-01-01 2 views
1

Si j'avais quelque chose comme:Obtenez ce qui est entre la balise d'ancrage qui est cliqué

<a>Content 1</a> 
<a>Content 2</a> 
<a>Content 3</a> 

Je voulais obtenir le ce qui est entre les balises d'ancrage (les mots étant cliqués), comment pourrais-je aller à propos de ça? Les liens sont affichés dynamiquement, donc je ne peux pas leur ajouter un attribut id. (Je pense que je ne peux pas, au moins.)

Répondre

3

Cela devrait fonctionner pour sélectionner tous:

$('a').each(function() { $(this).text(); /* do something with it */ }); 

si vous voulez obtenir l'événement, cliquez sur les balises d'ancrage, mais seulement ceux sans id ou classe , essayez ceci:

$('a').not('a[id]').not('a[class]').click(function() { $(this).text(); ... }); 

et si vous voulez que votre action à exécuter une fois:

$('a').not('a[id]').not('a[class]').one("click", function() { $(this).text(); ... }); 
+0

Je veux que le contenu de celui cliqué, cependant. Est-ce possible, tout en gardant les balises d'ancrage comme elles sont? – Andrew

+0

changer .each pour .click, en quelque sorte j'ai raté la partie "cliqué" –

+0

Cela a fonctionné à merveille. Merci. :) – Andrew

1

vous pouvez utiliser les CSS sélecteur qui correspond à ces balises pour obtenir un objet jQuery pour eux.

Vous pouvez ensuite utiliser text() pour obtenir le contenu d'une balise en texte brut ou html() obtenir le code html directe, y compris les balises imbriquées.

Exemple:

$('a').each(function() { 
    alert($(this).text()); 
}); 
1

Si les liens sont effectivement construites dynamiquement une fois que la page est déjà servi au client alors vous voulez envelopper vos <a> étiquettes avec un élément d'identification, puis ajoutez un écouteur d'événement à la élément d'emballage.

Si vous voulez que ce comportement pour tous les liens sur la page, puis il suffit d'utiliser:

$('a').click(
    function() { 
     var link_text = $(this).text(); 
     //Do something with link_text 
    });