如何从 jquery.tmpl 中解析的 html 中获取子字符串

Posted

技术标签:

【中文标题】如何从 jquery.tmpl 中解析的 html 中获取子字符串【英文标题】:How can I get substring from parsed html in jquery.tmpl 【发布时间】:2016-12-19 10:25:02 【问题描述】:

我的jquery模板很简单,就是

<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>

我在我的 js 文件中使用这个模板:

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

其中 data 是我想要重复的实际数据。和文章是页面上的另一个 div 元素。 它工作正常,但问题是有时描述太长,我只想显示前 500 个字符。 如您所见,描述是 html 内容,我已经尝试过使用类似于 createdDate(function getArticleDateFormat) 的函数

请提供一些解决方案。 谢谢

【问题讨论】:

【参考方案1】:

这不是特定于 jQuery 模板的问题 - 而是一般 HTML 的问题 - 即您不能简单地截断 HTML 标记以使其显示的字符更少。显然,如果您截断它,它可能不再是格式良好的 HTML。要么你必须简单地显示文本内容并截断它,要么你必须解析或单步遍历 HTML 节点,并在最后删除或截断文本节点。

【讨论】:

非常感谢@Boris。我真的很感谢你的回答。我知道这不是模板问题。你能帮我如何从这里截断解析的 html。这真的是一个很棒的模板库,我不想仅仅为了截断而进行整个代码替换。我不知道如何继续我的代码。提前致谢。 您应该能够在提供truncate() 函数的地方执行html truncate(description, 500)。执行该功能的一种方法是将描述标记插入临时 DIV 元素,并使用 jQuery contents()querySelectorAll(*) 之类的东西来获取包括文本节点在内的所有节点。遍历它们并删除或截断最后的那些。然后再次获取 div 的 innerHTML 并返回...

以上是关于如何从 jquery.tmpl 中解析的 html 中获取子字符串的主要内容,如果未能解决你的问题,请参考以下文章

如何将 jQuery.tmpl 模板呈现为字符串?

jquery tmpl 详解

jquery tmpl 详解

jquery tmpl 详解

jquery tmpl 详解

jquery模板jquery.tmpl.js使用教程(附jquery.tmpl.js下载)