Pregunta

Ok, así que aquí está el flaco ...

He desarrollado una función jQuery que primero mirará la página y buscará < cite > etiquetas Luego, mira el texto que contiene y busca un guión. Si encuentra uno, entonces todo ANTES del guión se utiliza como texto dentro de la etiqueta. Considerando que, todo DESPUÉS del guión se utiliza en un evento de un clic que abre una nueva ventana a esa url.

Esto es lo que parece:

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

Y aquí es cómo se usa:

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

Ahora, lo tengo funcionando perfectamente en una página estática ... Vea aquí: http://blatantwasteofspace.com/crapadoodledoo/cite-test.html

Sin embargo, cuando trato de implementarlo como una secuencia de comandos que está cargada en un tema de WordPress, ¡falla estrepitosamente! Consulte aquí: http://blatantwasteofspace.com/at-random/quotes-time No lo entiendo ... Quiero decir, estoy cargando la misma versión de jQuery. Al principio pensé que podría ser porque estaba usando wp_enqueue_script ('jquery') para cargar jQuery ya que carga la versión de noconflict ... Entonces, eliminé eso y simplemente cargué la misma versión que estoy cargando en la página estática. pero aún no hay dados.

¿Alguna idea?

¿Fue útil?

Solución

WordPress está convirtiendo automáticamente sus guiones ASCII - en & # 8211; (aparecen en la página como & amp; # 8211; ). Este carácter no coincidirá con el guión ASCII en la expresión regular.

(¡Diga no a la tipografía automática & # 8220; smart & # 8221; equivocada, niños! En-dash ni siquiera es la marca correcta, ya que normalmente indica rangos numéricos como 1 & # 8211; 10. El em-dash & # 8216; & # 8212; & # 8217; sería más adecuado aquí.)

¿Hay alguna buena razón por la cual las citas no deberían ser enlaces reales? También facilitaría el procesamiento. por ejemplo.

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

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

Otros consejos

Podría ser que su script esté cargado antes que el contenido. Si intentas algo como esto en su lugar:

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

Sin embargo, eso seguirá mostrando el enlace en el texto y no lo eliminará (y hará el análisis una vez que haga clic en la etiqueta, no antes), pero al menos debería funcionar.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top