在div中添加文本以查找内容

时间:2015-07-06 06:14:21

标签: javascript jquery html

我有一个ID为content的div。我想在此div My Company中进行搜索,然后在{id} = My Company中出现的任意位置®之后添加商标content。问题是文字My Company并不总是在HTML中My Company。它可以是My <span style="something">C</span>ompanyMy <font color="something">C</font>ompany,我也不知道如何在文本®之后添加My Company符号,即使它包含html标记(如上所示) )。

我想用JS / Jquery做这件事。非常感谢你!!!

尝试:

$("#content").each(function() {
    var text = $(this).text();
    text = text.replace("My Company", "My Company®");
    $(this).text(text);
});

但仅当My Company My <span style="something">C</span>ompanyMy <font color="something">C</font>ompany

时才有效

修改

我有一个(单个)div #content

示例

<div id="content">
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi et nisl quam. Praesent semper enim elit, vel imperdiet ipsum vulputate ac. Curabitur lacinia vitae metus sit amet consectetur.

My Company

Sed metus risus, iaculis a erat id, pretium congue nisi. Phasellus tempor, massa lobortis scelerisque pharetra, orci metus ultrices quam, eu sodales massa erat ut ipsum. Vestibulum ullamcorper interdum pretium. My <span style="color: orange;">C</span>ompany Praesent mollis in ex in feugiat. Ut vitae placerat diam. 
</div>

6 个答案:

答案 0 :(得分:1)

这就是你如何做到的

AtomicLongMap frequentPhrases = AtomicLongMap.create();
frequentPhrases.getAndIncrement(phrase.trim());

修改

如果您想保留 HTML ,也可以使用更新代码

{{1}}

查看更新小提琴 http://jsfiddle.net/69sv52y2/16/

答案 1 :(得分:1)

如果您想在页面上使用相同样式的多个div,请使用类。

$("#content").each(function() {
    var text = $(this).html();
    text = text.replace(/My Company/g, "My Company<sup>®</sup>");
    text = text.replace(/My (<\/?span[^>]*>C\<\/span\>ompany)/g, "My Company<sup>®</sup>");
    text = text.replace(/My (<\/?font[^>]*>C\<\/font\>ompany)/g, "My Company<sup>®</sup>");
    $(this).html(text);
});

答案 2 :(得分:0)

嗨,你可以这样添加吗?

$("#content").each(function() {
    var text = $(this).text();
    if(text === 'My Company') {
       $(this).append('<span class="copyrightSymbol"> ® </span>');
    }
});

这会奏效。但#content在页面中只允许使用一次,因为它是Id。

答案 3 :(得分:0)

试试这个

$("#content").each(function() {
    var text = $(this).text();
    text = text.replace(/My Company/g, "My Company®");
    $(this).text(text);
});

您正在做的早期步骤是正确的,但您错过了全局替换部分。 jQuery text()将仅获取div标记内的文本部分。所以不必担心被包裹的内部标签。

JSFiddle:https://jsfiddle.net/srb8fusn/

答案 4 :(得分:0)

由于my company之间存在多个空格,您遇到此问题 如果div中有<span>标记,那么我猜你的HTML就是这样的<div class='content'> My <span> Company </span></div>,因此MyCompany之间有两个空格字符串替换不起作用。

所以你必须先用单个空格替换多个空格。

也适用于这些条件

My <font color="something">C</font>ompany

My <span style="something">C</span>ompany

其次如果您使用多个dives,则应使用class代替id

试用此代码:

$(".content").each(function() {
        var text = $(this).text();
        console.log(text);
        text = text.replace(/ +(?= )/g,'').replace(/My Company/g, "My Company®");
        $(this).text(text);
    });

DEMO: http://jsfiddle.net/ishandemon/e9t7wjo8/

答案 5 :(得分:0)

如果有的话,您需要先在“我的内容”周围删除HTML标记。

然后用纯文本搜索它。

如果找到,您可以在最后添加商标。

这也将保留“我的内容”

的原始HTML标记

条件:你必须有我的单一内容&#39;在div内部#content

WORKING FIDDLE

<强> CODE

基本上我会创建一个HTML条带函数来删除文本周围的额外HTML标记,然后搜索如下面的代码所示。

@echo off
    setlocal enableextensions disabledelayedexpansion 

    set "adminErrorText=administrator"
    set "hostedNetworkText=Hosted network supported  : Yes"

    (for /f "tokens=1,2 delims=:" %%a in ('
        netsh wlan show drivers
        ^| findstr /l /c:"%hostedNetworkText%"  /c:"%adminErrorText%"
    ') do (
        if "%%b"=="" (
            msg console "Please run as Administrator." 
            exit /b 
        )
    )) || ( 
        msg console "Your Wireless Network Adapter is not supported." 
        exit /b 
    )

    echo OK