2011-07-02 3 views
2

J'attrape l'événement click sur certains hyperliens et ouvre une boîte de dialogue jQuery UI à l'aide de href. Je retourne faux pour éviter le navigateur le faire aussi ...Paramètre visité sur le lien dans jQuery

$('a.previewable').click(function(){ 
      $('#dialog').html('<img src="'+$(this).attr('href')+'">'); 
      $('#dialog').dialog({ 
        title: 'Preview', 
        width: 350, 
        modal: true 
      }); 
      return false; 
    }); 

Il fonctionne très bien, mais la couleur de lien ne change pas visité quand je clique dessus. Comment puis-je dire au navigateur que le lien a bien été visité?

Merci!

Répondre

4

Eh bien, puisque vous avez fait return false, il n'a pas été visité. Le mieux que vous pourriez probablement faire est le style.

$(this).addClass('visited'); 

css
.visited { 
    color: purple; 
} 
+2

Bien que je rende 'a: visited, a.visited {color: # 00e; } 'de sorte que les liens visités et les liens marqués avec la classe' visited' sont stylés de la même manière. – tvanfosson

+0

@tvanfosson: +1 Bonne idée. – user113716

2

Ces scénarios sur l'ajout d'une classe personnalisée sont bizarres. Que se passe-t-il la prochaine fois que la page est actualisée? N'auriez-vous pas besoin de suivre tous les liens qui contenaient la classe visitée et de conserver ces informations dans un backend afin de pouvoir les restaurer lors de requêtes ultérieures? Je pense que tous ces styles seraient effacés lors de la prochaine requête car toute la logique est faite en mémoire, côté client via JavaScript. Le navigateur maintient normalement un cache et conserve cette information.

+0

Je serais d'accord - ce serait beaucoup mieux si l'information persistait. Y a-t-il un moyen d'y parvenir? Une requête AJAX dans la boîte de dialogue de l'interface utilisateur serait-elle meilleure? – Tak

+0

Eh bien ... cela pourrait être fait, mais vous devrez commencer à coller des identifiants sur vos hyperliens afin que vous sachiez comment les récupérer lors de la prochaine actualisation. La requête AJAX fonctionnerait probablement, mais je ne voudrais pas faire un aller-retour aveugle au serveur juste pour que les liens deviennent violets. C'est ce que vous avez en tête, n'est-ce pas? Faites simplement la demande au serveur et ne vous souciez pas de la réponse? Si vous voulez faire cela, vous feriez mieux de mettre des étiquettes sur ces images afin qu'elles ne soient pas servies aveuglément. Je suppose que si vous voulez vraiment que cela persiste, alors ce dernier serait l'approche la plus facile. –

+0

Non Je pensais charger le contenu de l'href via AJAX dans la boîte de dialogue, donc le navigateur récupère l'URL et (je l'espère?) Le compte comme "visité" – Tak