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


78

就像标题所说的那样,我想替换div中文本的特定部分。

结构如下:

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

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


如果文本是“此div包含一些包含一些字母的文本”,我想更改第一个包含的内容,而不是第二个。或者选择任何单词,它将被预定义的单词更改。
StockBoi 2014年

Answers:


145

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

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

这是一个有效的例子


2
您可以对所有事件使用正则表达式/ iwantreplacethis / g
艾菲

1
非常感谢您:)一个简单的问题:为什么没有返回就无法正常工作
Aaron Matthews

2
@AaronMatthews这个答案是很久以前的,但是我相信这是因为jQuerytext方法在传递函数时会将选择的文本设置为该函数的返回值。没有return文字,文字将一无所有。
James Allardice

12

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

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

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

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

如果无法将其包装在span标记中,则可以使用正则表达式。



5

使用此代码非常简单,它将保留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/


3

您可以使用contains选择器来搜索包含特定文本的元素

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

​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​


如果我的字符串包含多个目标词,它将替换多个词,那么将是什么?
Tamaghna Banerjee'2
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.