我有以下代码:
<p>
To
<br>
{customerDetails}
</p>
我尝试了以下但却出错了。
Jerry doc = Jerry.jerry(FileUtil.readString(file));
doc.$("#customerDetails").text(ci.name + "<BR/>" + ci.addr1);
这里将被{customerDetails}取代的文本应该是独立的,这就是为什么我不想对标签提供任何帮助的原因。如果我为{customerDetails}提供任何标签,则“To”将被取消。
我想用一些文本替换“{customerDetails}”而不需要任何html标签或css类和id的帮助。 有可能吗?
答案 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元素。您可以做的是使用这样的空占位符div
或span
:
<p>to<br><span id="#custdet">{customerDetails}</span></p>
然后你就可以做一些像你在问题中写的那样。
无论如何,如果可能的话,我会尝试以不同的方式解决这个问题。如果您已经有标记和HTML内容,您可以直接替换它吗?