在 Jerry 中将文本替换为 {} 符号



我有以下代码:

              <p>
                To
                <br>
            {customerDetails}
              </p>

我尝试跟随,但它给出了一个错误。

    Jerry doc = Jerry.jerry(FileUtil.readString(file));
doc.$("#customerDetails").text(ci.name + "&lt;BR/&gt;" + ci.addr1);

在这里,将被 {customerDetails} 替换的文本应该是独立的,这就是为什么我不想接受标签的任何帮助。如果我为 {customerDetails} 提供任何标签,"To"将扰。

我想用一些文本替换"{customerDetails}",而无需任何html标签或css类和id的帮助。可能吗?

这将适用于上面的确切 html...

$("p").html(function(i, html) {
    return html.replace("{customerDetails}", ci.name + "<br />" + ci.addr1);
});

如果页面中有其他段落标签,那么它也将针对它们运行。 正如我上面评论的那样,我们真的需要更多的信息来给你一个好的答案,而不仅仅是一个答案。

JSFIDDLE 示例...

首先,这不是一个javascript问题,而是Java问题。这是关于Jodd Jerry的,解析Java中的库看起来与jQuery非常相似。所以这里所有的jsfiddle解决方案都无济于事,我相信在这个问题上的一些负分是不行的。

无论如何,@Archer解决方案是可以给出一个好方向的解决方案。这是相同的Java版本:

Jerry doc = Jerry.jerry("<p>to<br>{customerDetails}</p>");
doc.$("p").each(new JerryFunction() {
    public boolean onNode(Jerry $this, int index) {
        String innerHtml = $this.html();
        innerHtml = StringUtil.replace(
            innerHtml, "{customerDetails}", "Jodd <b>rocks</b>");
        $this.html(innerHtml);
        return true;
    }
});
String newHtml = doc.html();
assertEquals("<p>to<br>Jodd <b>rocks</b></p>", newHtml);

Jerry 仍然没有实现html(function)类型的方法(它在待办事项上),因此您必须显式使用each

请注意,您无法搜索#customerDetails因为您没有任何具有此 ID 的 DOM 元素。相反,您可以做的是div有一个空占位符或如下所示的span

<p>to<br><span id="#custdet">{customerDetails}</span></p>

然后你就可以做一些像你在问题中写的那样的事情。

无论如何,如果可能的话,我会尝试以不同的方式解决这个问题。如果您已经有标记和 HTML 内容,您可以简单地替换它而不进行解析吗?

最新更新