2 Stimmen

Dynamisch Wörter in Anker-Element mit jQuery einwickeln

Ich versuche, eine Funktion zu schreiben, die jQuery verwendet, um Wörter dynamisch in Anker-Tags zu umschließen. Speziell möchte ich, dass jede Instanz von Autorennamen in Blog-Beiträgen zu einer Seite ihrer Beiträge verlinkt wird. Was ich jetzt habe, zeigt keine Fehler an, ersetzt aber meine Namen nicht durch Links:

( function( $ ) {
  jQuery(document).ready(function ($) {
    function linkAuthorRefs( authors, newName ) {
      for( i = 0; i < authors.length; i++ ) {
        var author = authors[i],
            regExAuthor = "/" + author + "/gi",
            $elements = $( '.entry-content p:contains( "' + author + '" ), .entry-summary p:contains( "' + author + '" )' );
        if( ! newName ) { var newName = author.toLowerCase(); }
        for( j = 0; j < $elements.length; j++ ) {
          e = $elements[j];
          e.html(e.html().replace( regExAuthor, '' + author + '' ) );
        }
      }
    }
    var authorNames = [ "Aaron", "Rebekah" ];
    linkAuthorRefs( authorNames );
    linkAuthorRefs( [ "Bekah" ], "rebekah" );
  });
} )( jQuery );

0voto

Aaronfuzion Punkte 43

Danke für Ihre Vorschläge. Nach weiteren Recherchen funktioniert Folgendes gut!

$.each( [ "Aaron", "Rebekah" ], function( i, j ) {
  var author = j,
      authorLower = author.toLowerCase(),
      regExAuthor = RegExp( "\\b" + author + "\\b", "gi"),
      anchoredText = '' + author + '',
      $elements = $( '.entry-content p, .entry-summary p' );
  $elements.each( function() {
    var $par = $( this );
    $par.html( $par.html().replace( regExAuthor, anchoredText ) );
  });
});

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X