jQuery 如果 div 包含此文本,则替换该部分文本

Posted

技术标签:

【中文标题】jQuery 如果 div 包含此文本,则替换该部分文本【英文标题】:jQuery if div contains this text, replace that part of the text 【发布时间】:2012-07-04 16:34:19 【问题描述】:

正如标题所说,我想替换 div 中文本的特定部分。

结构如下:

<div class="text_div">
    This div contains some text.
</div>

例如,我只想将“包含”替换为“大家好”。 我找不到解决办法。

【问题讨论】:

如果文本是“这个 div 包含一些包含一些字母的文本”并且我希望更改第一个包含,而不是第二个,那该怎么办。或者只需选择任何单词,它将被预定义的单词更改。 【参考方案1】:

您可以使用text 方法并传递一个返回修改后文本的函数,使用本机String.prototype.replace 方法执行替换:

​$(".text_div").text(function () 
    return $(this).text().replace("contains", "hello everyone"); 
);​​​​​

这是working example。

【讨论】:

您可以使用正则表达式 /iwantreplacethis/g 来处理所有情况 非常感谢 :) 一个简单的问题:为什么没有回报就行不通 @AaronMatthews 这个答案是很久以前的了,但我相信这是因为 jQuery text 方法在传递一个函数时,会将选择的文本设置为该函数的返回值.如果没有return,文本将被替换为空。【参考方案2】:

如果可能的话,您可以将要替换的单词包含在 span 标记中,如下所示:

<div class="text_div">
    This div <span>contains</span> some text.
</div>

然后您可以使用 jQuery 轻松更改其内容:

$('.text_div > span').text('hello everyone');

如果不能用 span 标签包装,可以使用正则表达式。

【讨论】:

【参考方案3】:

非常简单,只需使用此代码,它将保留 html,同时仅删除未包装的文本:

jQuery(function($)

    // Replace 'td' with your html tag
    $("td").html(function()  

    // Replace 'ok' with string you want to change, you can delete 'hello everyone' to remove the text
          return $(this).html().replace("ok", "hello everyone");  

    );
);

这里是完整的例子:https://blog.hfarazm.com/remove-unwrapped-text-jquery/

【讨论】:

【参考方案4】:
var d = $('.text_div');
d.text(d.text().trim().replace(/contains/i, "hello everyone"));

【讨论】:

【参考方案5】:

您可以使用contains selector 搜索包含特定文本的元素

var elem = $('div.text_div:contains("This div contains some text")')​;
elem.text(elem.text().replace("contains", "Hello everyone"));

​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​。

【讨论】:

如果我的字符串包含多个目标词,这将替换多个词,那会是什么?

以上是关于jQuery 如果 div 包含此文本,则替换该部分文本的主要内容,如果未能解决你的问题,请参考以下文章

JQuery判断DIV中是不是包含图片标签

如果类包含某个字符串,则 div 中所有 <img> 的 jQuery 选择器

jquerymobile 主题 .html 动态 div 替换 jquery

JQuery判断DIV中是不是包含图片标签

如果 div 包含单词 "example" ,则 addClass 显示 none 到另一个 div

使用jQuery完全删除和替换Div内容