1

Meine jquery Vorlage ist sehr einfach, dieWie kann ich von analysiert html in jquery.tmpl Teilkette

<div id="pageArticleTemplate" class="hide-me"> 
    <article class="post-item"> 
     <div class="wrapper row"> 
      <div class="meta"> 
       ${getArticleDateFormat(createdDate)} 
      </div> 
      <h2>${title}</h2> 
      <div class="excerpt text-justify"> 
       {{html description}} 
      </div> 
     </div> 
    </article> 
</div> 

ist ich diese Vorlage in meiner js Datei verwenden als:

var markup = $("#pageArticleTemplate").html(); 
$.template("pageTemplate", markup); 
$.tmpl("pageTemplate", data).appendTo("#articles"); 

wo Daten sind die tatsächlichen Daten, die ich wiederholen möchte. und Artikel ist ein weiteres div-Element auf der Seite. Es funktioniert gut, aber Problem ist manchmal Beschreibung ist zu lang und ich möchte nur die ersten 500 Zeichen anzeigen. Wie Sie sehen, ist die Beschreibung HTML-Inhalt und ich habe bereits versucht mit der Funktion wie ich für createdDate (function getArticleDateFormat{})

Bitte versuchen Sie eine Lösung. Danke

Antwort

0

Dies ist kein jQuery Templates-spezifisches Problem - aber ein Problem mit HTML im Allgemeinen - nämlich, dass Sie HTML-Markup nicht einfach abschneiden können, um es mit weniger Zeichen anzuzeigen. Offensichtlich, wenn Sie es abschneiden, wird es wahrscheinlich nicht mehr wohlgeformtes HTML sein. Entweder müssen Sie den Textinhalt einfach anzeigen und abschneiden, oder Sie müssen die HTML-Knoten analysieren oder schrittweise bearbeiten und die Textknoten am Ende entfernen oder abschneiden.

+0

Vielen Dank @Boris. Ich schätze deine Antwort sehr. Ich weiß, dass dies kein Template-Problem ist. Können Sie mir helfen, wie kann ich geparste HTML von hier aus kürzen. Es ist wirklich eine tolle Template-Bibliothek und ich möchte nicht den ganzen Code-Ersatz nur zum Abstumpfen durchlaufen. Ich habe keine Ahnung, wie ich mit meinem Code verfahren soll. Danke im Voraus. –

+1

Sie sollten '{{html truncate (description, 500)}}' tun können, wo Sie die Funktion 'truncate()' angeben. Eine Möglichkeit, diese Funktion auszuführen, besteht darin, das Beschreibungs-Markup in ein temporäres DIV-Element einzufügen und etwas wie jQuery 'contents()' oder 'querySelectorAll (*)' zu verwenden, um alle Knoten einschließlich Textknoten zu erhalten. Iteriere durch sie und entferne oder trenne die am Ende. Dann nimm das innerHTML des divs wieder und gib das zurück ... – BorisMoore

Verwandte Themen