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 这个答案是很久以前的了,但我相信这是因为 jQuerytext
方法在传递一个函数时,会将选择的文本设置为该函数的返回值.如果没有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 包含此文本,则替换该部分文本的主要内容,如果未能解决你的问题,请参考以下文章
如果类包含某个字符串,则 div 中所有 <img> 的 jQuery 选择器
jquerymobile 主题 .html 动态 div 替换 jquery