Question

Ok, alors voici le maigre ...

J'ai mis au point une fonction jQuery qui examinera d'abord la page et recherchera < cite > Mots clés. Ensuite, il examine le texte qu'il contient et cherche un trait d'union. S'il en trouve un, tout AVANT que le trait d'union soit utilisé comme texte dans la balise. Considérant que tout ce qui EST APRÈS le trait d'union est utilisé dans un événement onlick qui ouvre une nouvelle fenêtre pour cette URL.

Voici à quoi cela ressemble:

 // Custom function for <cite> tags making them clickable
 $('cite:contains("-")').each(function(){
  var split=$(this).html().match( /([\s\w]+)[\-](.+)$/i );
  $(this).text(split[1]);
  $(this).click(function(){
   window.open( split[2] );
   return false;
  });
 });

Et voici comment il est utilisé:

<blockquote>
This is quoted text from some article somewhere on the web... 
<cite>Source of Quote - http://quotedsitesource.com</cite>
</blockquote>

Maintenant, cela fonctionne parfaitement sur une page statique ... Voir ici: http://blatantwasteofspace.com/crapadoodledoo/cite-test.html

Cependant, lorsque j'essaye de l'implémenter en tant que script chargé dans un thème WordPress, il échoue lamentablement! Voir ici: http://blatantwasteofspace.com/at-random/quotes- time Je ne comprends pas ... Je veux dire, je charge exactement la même version de jQuery. Au début, je pensais que c’était peut-être parce que j’utilisais wp_enqueue_script ('jquery') pour charger jQuery car il charge la version non conflictuelle ... Alors, j’ai supprimé cela et chargé juste la version que je charge dans la page statique, mais toujours pas de dés.

Des idées?

Était-ce utile?

La solution

WordPress convertit automatiquement vos tirets ASCII - en - (apparaissant dans la page sous le code & amp; # 8211; ). Ce caractère ne correspond pas au tiret ASCII dans l'expression régulière.

(Dites non à la typographie automatique «intelligente» erronée, enfants! En-dash n'est même pas la bonne marque, car elle désigne normalement des plages numériques telles que 1–10. Le d-dash '-' conviendrait mieux ici. )

Y a-t-il une bonne raison pour laquelle les citations ne devraient pas être de véritables liens? Cela faciliterait également le traitement. par exemple.

<cite><a href="http://blah">Blah</a></cite>

$('cite a').click(function(e) {
    var pop= window.open(this.href);
    return pop && !pop.closed;
});

Autres conseils

Il se peut que votre script soit chargé avant le contenu. Si vous essayez quelque chose comme ceci à la place:

$(document).ready(function(){
 $('cite:contains("-")').live('click', function(){
  var split=$(this).html().match( /([\s\w]+)[\-](.+)$/i );
  window.open( split[2] );
  return false;
 });
});

Cependant, cela affichera toujours le lien dans le texte et ne le supprimera pas (et il procédera à l'analyse une fois que vous aurez cliqué sur la balise, pas avant), mais au moins, cela devrait fonctionner.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top