我有以下代码:
<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的帮助。可能吗?
这将适用于上面的确切 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 内容,您可以简单地替换它而不进行解析吗?