用Jquery包装一个元素的一些文本?

时间:2015-01-19 15:51:29

标签: javascript jquery dom textwrapping

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

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

元素 - &gt;文本

的容器元素的id

开始 - &gt;注释的第一个字符在元素内的位置

结束 - &gt;注释的最后一个字符在元素内的位置

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

使用此元素:

    <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>

由于我在运行查询时对“London”这个词有注释,我获得了:

element = "element_id"
start = 27
end = 33

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

1 个答案:

答案 0 :(得分:0)

这可能有点脏,但我认为它应该有用。由于您拥有包含&#34; London&#34;的元素,因此您可以将该元素的HTML替换为当前所在内容的修改版本。

您可以在此处查看如何使用jquery html函数:

How to replace innerHTML of a div using jQuery?

基本上,你要做的是将它作为一个吸气剂,将HTML从&#34; element_id&#34;中取出来。元素,使用Javascript字符串函数通过在您拥有的开始和结束索引处添加span标记来修改它,然后使用html函数用修改后的字符串替换&#34; element_id&#34;的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);