Domanda

Ok, ecco il magro ...

Ho elaborato una funzione jQuery che prima guarderà la pagina e cercherà < cite > tag. Quindi, esamina il testo contenuto al suo interno e cerca un trattino. Se ne trova uno, tutto PRIMA del trattino viene utilizzato come testo all'interno del tag. Considerando che, tutto DOPO il trattino viene utilizzato in un evento onlick che apre una nuova finestra a quell'URL.

Ecco come appare:

 // 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;
  });
 });

Ed ecco come viene utilizzato:

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

Ora, ho funzionato perfettamente su una pagina statica ... Vedi qui: http://blatantwasteofspace.com/crapadoodledoo/cite-test.html

Tuttavia, quando provo a implementarlo come uno script caricato in un tema WordPress, fallisce miseramente! Vedi qui: http://blatantwasteofspace.com/at-random/quotes-time Non capisco ... Voglio dire, sto caricando la stessa identica versione di jQuery. All'inizio ho pensato che potesse essere perché stavo usando wp_enqueue_script ('jquery') per caricare jQuery poiché carica la versione noconflict ... Quindi, l'ho rimosso e ho appena caricato la stessa versione che sto caricando nella pagina statica, ma ancora nessun dado.

Qualche idea?

È stato utile?

Soluzione

WordPress sta trasformando automaticamente i trattini ASCII - in & # 8211; en-dashes (visti nella pagina come & amp; # 8211; ). Questo personaggio non corrisponde al trattino ASCII nella regex.

(Di 'no alla tipografia erroneamente automatica & # 8220; smart & # 8221; ragazzi! En-dash non è nemmeno il segno giusto in quanto indica normalmente intervalli numerici come 1 & # 8211; 10. Em-dash & # 8216; & # 8212; & # 8217; sarebbe più adatto qui.)

C'è qualche buona ragione per cui le citazioni non dovrebbero essere collegamenti reali? Semplificherebbe anche l'elaborazione. ad es.

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

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

Altri suggerimenti

È possibile che il tuo script sia caricato prima del contenuto. Se invece provi qualcosa del genere:

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

Tuttavia, ciò mostrerà comunque il collegamento nel testo e non lo rimuoverà (e eseguirà l'analisi una volta fatto clic sul tag, non prima), ma almeno dovrebbe funzionare.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top