用Jerry中的{}符号替换文字?

时间:2014-02-14 10:43:01

标签: jquery jquery-selectors jodd

我有以下代码:

              <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的帮助。 有可能吗?

2 个答案:

答案 0 :(得分:1)

这将与您上面的确切html一起使用...

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

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

<强> jsfiddle example...

答案 1 :(得分: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内容,您可以直接替换它吗?