2016-08-07 7 views
-1

Ich habe den folgenden HTML-Code:Wie füge ich verschiedene Hyperlinks zu data- * hinzu?

<article class="article" data-quota="Here goes nothing" data-share="Here goes social" data-tag1="Tag1" data-tag2="Tag2" data-tag3="Tag3"> 
    <h3>Author name</h3> 
</article> 

und JS:

function articleTemplate() { 
    $('.article').each(function() { 

    var $this = $(this), 
     dataQuota = $this.data('quota'), 
     dataTag1 = $this.data('tag1'), 
     dataTag2 = $this.data('tag2'), 
     dataTag3 = $this.data('tag3'), 
     dataShare = $this.data('share'); 

    var template = '<h4>' + dataQuota + '</h4>' + 
        '<h5>' + dataTag1 + ',' + dataTag2 + ',' + dataTag3 + '</h5>' + 
        '<footer>' + dataShare + '</footer>'; 

    $this.append(template); 
    }); 
} 

ich einige templateing mit Javascript tue und bis jetzt habe ich diese. Die outputed html ist:

<h3>Author name</h3> 
<h4>Here goes nothing</h4> 
<h5>Tag1,Tag2,Tag3</h5> 
<footer>Here goes social</footer> 

Jetzt möchte ich Hyperlinks zu Daten-Quote, Daten-Anteil, Daten-tag1 usw. hinzufügen?

+1

Wenn der entsandte Codezeile ist Ihr * Eingang *, was tun Sie mit als * Ausgabe * am Ende erwarten? Was für JavaScript hast du versucht, wo bist du stecken geblieben? Was schief gelaufen ist? Welche Fehler haben Sie bekommen? Was hat nicht so funktioniert wie es sollte? Was hast du * erwartet * und was ist eigentlich passiert? –

+0

Ich habe keine Fehler. Aber jetzt möchte ich einen Hyperlink zu jedem ausgegebenen Text hinzufügen. Hoffe mein Englisch ist klar genug. – Bobita

Antwort

0

Sie, wie verschiedene Optionen. Man würde es so schreiben:

<article class="article" data-quota-content="Here goes nothing" data-quota-href="/some/link"> 
    <h3>Author name</h3> 
</article> 

jQuery wird die Daten automatisch in ein verschachteltes Objekt konvertieren.

und gleichwertige Lösung wäre, eine JSON formatierten String in Ihr Attribut setzen diese auch automatisch analysiert werden:

<article class="article" data-quota='{"content":"Here goes nothing", "href":"/some/link"}'> 
    <h3>Author name</h3> 
</article> 

Also, wenn Sie schreiben:

var $this = $(this), 
    dataQuota = $this.data('quota') 

Dann dataQuota wird ein Objekt sein, enthält:

{ 
    content : "Here goes nothing", 
    href : "/some/link" 
} 

Und Sie könnten es verwenden, dass Übrigens:

var template = '<h4><a href="'+dataQuota.href+'">' + dataQuota.content + '</a></h4>' + 

Als Hinweis, sollten Sie nicht HTML-Code erstellen, wie Sie oben haben, ein besserer Weg ist es auf diese Weise zu erstellen:

$this.append( 
    $('<h4>').append(
     $('<a>') 
      .attr('href',dataQuota.href) 
      .text(dataQuota.content) 
    ) 
); 

Dies stellt sicher, dass Sie nicht über get Probleme mit der Flucht.

+0

vielen dank für die antwort, aber ich habe einen anderen weg gefunden .. vielen dank – Bobita

+0

@Bobita, wenn Sie einen anderen Weg gefunden, dann sollten Sie dies als eine Antwort teilen. –

+0

danke für den Vorschlag – Bobita

0

nur einige einfache tweek zu js-Datei:

function articleTemplate() { 
    $('.article').each(function() { 

     var $this = $(this), 
      dataQuota = $this.data('quota'), 
      dataTag1 = $this.data('tag1'), 
      dataTag2 = $this.data('tag2'), 
      dataTag3 = $this.data('tag3'), 
      dataShare = $this.data('share'); 

     var template = '<h4><a href="' + url + '">' + dataQuota + '</a></h4>' + 
         '<h5><a href="' + url2 + '">' + dataTag1 + '</a>,' + dataTag2 + ',' + dataTag3 + '</h5>' + 
         '<footer>' + dataShare + '</footer>'; 

     $this.append(template); 
    }); 

} 

var url = "http://bencollier.net/"; 
var url2 = "http://google.ro/"; 
+0

Aber dann Sie Frage war nicht richtig, Sie fragte 'Wie Sie verschiedene Hyperlinks zu Daten hinzufügen- *'. Aber du hast zwei feste URLs, die du zu 'h4' und' h5' hinzufügst und sie sind für jeden 'Artikel' gleich. –

+0

@ t.niese Ich habe es nicht mit meinem Skript geschafft ... kannst du dein Skript bitte erneut posten – Bobita

Verwandte Themen