Frage

Ok, also hier ist die dünne ...

Ich habe eine jQuery-Funktion ausgearbeitet, die zuerst auf der Seite aussehen werden und die Suche nach -Tags. Dann sieht es auf den Text in ihm und sucht nach einem Bindestrich enthalten. Wenn es einen findet, dann ist alles vor dem Bindestrich wird als Text innerhalb des Tags verwendet. Während alles nach dem Bindestrich in einem onlick Ereignisse verwendet, die auf diese URL öffnet ein neues Fenster.

Hier ist, wie es aussieht:

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

Und hier ist, wie es verwendet wird:

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

Jetzt habe, habe ich es perfekt auf einer statischen Seite arbeitet ... Siehe hier: http://blatantwasteofspace.com/crapadoodledoo/cite-test.html

Allerdings, wenn ich versuche, es als Skript zu implementieren, die in einem Wordpress-Theme geladen ist, es scheitert kläglich! Siehe hier: http://blatantwasteofspace.com/at-random/quotes-time Ich verstehe es nicht ... ich meine, ich bin genau die gleiche Version von jQuery geladen wird. Zuerst dachte ich, es könnte sein, weil ich wp_enqueue_script wurde mit ( ‚jquery‘) jQuery zu laden, da es die noConflict Version lädt bis ... Also, ich entfernte, dass geladen und nur die gleiche Version, die ich in der statischen Seite bin Laden, aber noch keine Würfel.

Irgendwelche Ideen?

War es hilfreich?

Lösung

Wordpress dreht automatisch ASCII - Striche in en-Strich (auf der Seite als &#8211; gesehen). Dieses Zeichen wird den ASCII-Strich in der Regex nicht überein.

!

(Lehnen Sie verfehlten automatische „intelligente“ Typografie, Kinder En-Bindestrich ist nicht einmal die richtige Marke, wie es normalerweise numerische Bereiche wie 1-10 bezeichnet der em-dash. ‚-‘ hier besser geeignet wäre. )

Gibt es einen guten Grund, warum die zitiert nicht unbedingt Links enthalten sein sollte? Es wäre auch die Verarbeitung erleichtern. zB.

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

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

Andere Tipps

Es könnte sein, dass Ihr Skript, bevor der Inhalt geladen wird. Wenn Sie versuchen, so etwas wie diese stattdessen:

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

Sie jedoch, dass nach wie vor auf den Link im Text zeigen wird und das Entfernen es nicht (und es wird das Parsen tun, wenn Sie den Tag klicken, wird nicht vor), aber zumindest sollte es funktionieren.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top