-3

我有以下代码:

              <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 的帮助。是否可以?

4

2 回答 2

1

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

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

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

jsfiddle示例...

于 2014-02-14T10:47:41.077 回答
0

首先,这不是一个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)实现类型的方法(它在 todo 上),所以你必须each显式使用。

请注意,您无法搜索,#customerDetails因为您没有任何具有此 ID 的 DOM 元素。你可以做的是有一个空的占位符divspan这样的:

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

然后你就可以做你在问题中写的事情。

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

于 2014-02-14T13:49:21.280 回答