2016-07-26 18 views
1

Im Moment habe ich diesen Code, der eine Spanklasse mit einem Hyperlink ersetzt. Der Hyperlink enthält eine Abkürzung und das alternative Texxt für den Hyperlink enthält die gleiche Abkürzung. Jetzt möchte ich die zweite Abkürzung im alternativen Text des Hyperlinks irgendwie ersetzen. So dass es nicht "klicke hier, um + zu besuchen '' Name '' Abkürzung", sondern stattdessen ein Alias. Also wenn der Abkürzung ggl ist, sollte der Alias ​​google sein. Aber der Hyperlink sollte diesen Alias ​​nicht verwenden. Kann mir jemand helfen? thxHyperlink alternativer Text Ersatz

(function($) { 
    var number = "1234567"; 

    function linkBuilder(abbreviation) { 
     return "<a href='https://www.test.com/" + abbreviation + "?sitenumber=" + number + "default'>Click here to visit " + abbreviation + "</a>"; 
    } 

    function linkBuilder2(abbreviation2) { 
     return "<a href='https://www.test.com/" + abbreviation2 + "?sitenumber=" + number + "default'>Click here to visit " + abbreviation2 + "</a>"; 
    } 
    jQuery(document).ready(function() { 
     var fl = $(".first-link"); 
     if (fl.length > 0) { 
      fl.html(linkBuilder(fl.data("abbreviation"))); 
     } 
     var sl = $(".second-link"); 
     if (sl.length > 0) { 
      sl.html(linkBuilder2(sl.data("abbreviation2"))); 
     } 
    }); 
})(jQuery); 
+1

Warum haben Sie zwei identische Funktionen? Benutze die 'linkBuilder'-Funktion beide Male und lösche die andere. – kalsowerus

+0

weil, wenn ich die Funktion für die gleiche Klasse zweimal verwende, der Ersatz für den zweiten Link identisch mit dem ersten Link ist, auch wenn sie unterschiedliche Abkürzungen haben. –

+0

und ich bin eine Art Anfänger/noob/was auch immer –

Antwort

1

Hier ist ein funktionierendes jsfiddle:

https://jsfiddle.net/e7qdx031/1/

linkBuilder() wieder verwendbar sein, wie kalsowerus erwähnt.

Eine andere Sache, die erwähnt werden sollte ist, dass der folgende Code eine Auflistung von Elementen zurückgibt, nicht nur ein einzelnes Element.

Der von Ihnen bereitgestellte Code funktioniert nicht ordnungsgemäß, wenn mehrere .first-link-Klassen auf der Seite vorhanden sind. Stattdessen würde ich über jedes Element mit $ .each() iterieren und die linkBuilder() - Funktion für sie einzeln ausführen.

Wie für die LinkBuilder-Funktion würde ich ändern, um das Element-Objekt zu akzeptieren, dann lesen Sie die Eigenschaften zum Abrufen von Alias ​​und Name. Vollständiger Name ist etwas, von dem Sie angaben, dass Sie es benötigen, aber nicht im Code enthalten war.

(function($) { 
    var number = "123456"; 

    function linkBuilder($obj) { 
     var abbreviation = $obj.data('abbreviation'); 
     var name = $obj.data('name'); 
     return "<a href='https://www.test.com/" + abbreviation + "?sitenumber=" + number + "default'>Click here to visit " + name + "</a>"; 
    } 

    jQuery(document).ready(function() { 
     $('.first-link, .second-link').each(function(index, obj){ 
      $(obj).html(linkBuilder($(obj))); 
     }); 
    }); 
})(jQuery); 
+0

Vielen Dank! Das funktioniert gut. –

+0

nur fragen, auch wenn ich denke, dass dies zu viel ist, wissen Sie (oder jemand anderes), wie dies mit php zu realisieren? –

1

Was Sie wahrscheinlich wollen etwas wie folgt aus:

function linkBuilder(abbreviation, alias) { 
    return "<a href='https://www.test.com/" + abbreviation + "?sitenumber=" + number + "default'>Click here to visit " + alias + "</a>"; 
} 

einfach passieren die Anzeige-Name, den Sie für Ihren Link wollen als zweites Argument.