用Jquery包装一个元素的一些文本? [重复]

问题描述 投票:0回答:1

这个问题在这里已有答案:

我有一篇带有一些注释的HTML文章,这个注释指的是体内的一些文本。我想将此文本包装在<span>标记中,以便我可以根据需要对其进行修改。

我有一个SPARQL查询,它返回一些信息和三个重要变量:

element - >文本的容器元素的id

start - >元素内注释的第一个字符的位置

end - >元素内注释的最后一个字符的位置

下面是一个可能会澄清的例子。

有了这个元素:

    <p class="metadata-entry" id="element_id">
    <span class="generated" id="span1">Publisher: </span>
    BioMed Central
    <span class="generated" id="span2"> (</span>
    London
    <span class="generated" id="span3">)</span>
    </p>

由于我在运行查询时对“伦敦”这个词有一个注释,我得到:

element = "element_id"
start = 27
end = 33

现在,在我的ajax调用返回这3个值之后,如何在一个范围中包含单词“London”,以便我可以将其背景设置为特定颜色?

javascript jquery dom textwrapping
1个回答
0
投票

这可能有点脏,但我认为它应该有效。由于您具有包含“London”的元素,因此可以使用当前所在内容的修改版本替换该元素的HTML。

你可以在这里看到如何使用jquery html函数:

How to replace innerHTML of a div using jQuery?

基本上,你要做的就是使用它作为getter来从“element_id”元素中获取HTML,使用Javascript字符串函数通过在开始和结束索引处添加span标记来修改它,然后使用html函数用修改后的字符串替换“element_id”的HTML。

我希望这对你有用!

编辑:为了更好地说明这一点,这里基本上是你要做的:

var currentHTML = $(element).html();
var newHTML = currentHTML.substring(0, start) + "<span style='background-color: green;'>" + currentHTML.substring(start, end) + "</span>" + currentHTML.substring(end, currentHTML.length);
$("element_id").html(newHTML);
© www.soinside.com 2019 - 2024. All rights reserved.