Javascript 在查找内容的div中添加文本
我有一个id为Javascript 在查找内容的div中添加文本,javascript,jquery,html,Javascript,Jquery,Html,我有一个id为content的div。我想在此divMy Company中搜索,然后在My Company之后添加商标>符号,该符号出现在div id=content中的任何位置。问题是文本我的公司并非总是以HTML格式显示为我的公司。它可能是My Company或My Company,我不知道如何在文本My Company后添加符号,即使其中包含html标记(如上所述) 我想用JS/Jquery实现这一点。非常感谢你 尝试: $("#content").each(function() {
content
的div。我想在此divMy Company
中搜索,然后在My Company
之后添加商标>
符号,该符号出现在div id=content
中的任何位置。问题是文本我的公司
并非总是以HTML格式显示为我的公司
。它可能是My Company
或My Company
,我不知道如何在文本My Company
后添加
符号,即使其中包含html标记(如上所述)
我想用JS/Jquery实现这一点。非常感谢你
尝试:
$("#content").each(function() {
var text = $(this).text();
text = text.replace("My Company", "My Company®");
$(this).text(text);
});
但只有当它是我的公司
时才有效,而不是当它是我的公司
或我的公司
编辑
我有一个(单个)div#内容
示例
<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>
Lorem ipsum dolor sit amet,是一位杰出的献身者。莫比和尼斯奎姆。事实上,这是一种致命的致命疾病,它的主要症状是死亡。
我的公司
这是一种风险,是一种风险,是一种风险。暂时性阶段、法雷特拉权杖、奥奇·梅特斯·乌尔里塞斯广场、欧盟共同市场。前庭前庭。我的公司在过去的几年里一直在做生意。这是我的生日。
您好,您可以这样添加,对吗
$("#content").each(function() {
var text = $(this).text();
if(text === 'My Company') {
$(this).append('<span class="copyrightSymbol"> ® </span>');
}
});
$(“#内容”)。每个(函数(){
var text=$(this.text();
如果(文本==‘我的公司’){
$(this.append(“®”);
}
});
这会奏效的。但是#内容在一个页面中只允许出现一次,因为它是一个Id。试试这个
$("#content").each(function() {
var text = $(this).text();
text = text.replace(/My Company/g, "My Company®");
$(this).text(text);
});
您之前所做的步骤是正确的,但是您错过了全局替换零件。
jQuerytext()
将只获取div
标记内的文本部分。因此,无需担心正在包装的内部标签
JSFiddle:这是您可以做到的
$(function(){
$('#content').each(function() {
var text = $(this).text();
$(this).text(text.replace('My Company', 'My Company®'));
});
});
编辑:
$(".content").each(function() {
var text = $(this).text();
console.log(text);
text = text.replace(/ +(?= )/g,'').replace(/My Company/g, "My Company®");
$(this).text(text);
});
如果您希望保留HTML,则更新的代码可能也会起作用
$(function(){
var children = $('#content').children();
children.each(function() {
var text = $.trim($(this).text());
if(text === 'My Company'){
var getTagName = $(this).prop("tagName");
var tagName = getTagName.toLowerCase();
var replaceText = '<'+tagName+'>'+'My Company®'+'</'+tagName+'>';
$(this).html(replaceText);
}
});
});
$(函数(){
var children=$('#content').children();
children.each(function(){
var text=$.trim($(this.text());
如果(文本==‘我的公司’){
var getTagName=$(this.prop(“标记名”);
var tagName=getTagName.toLowerCase();
var replaceText=''+'我的公司®'+'';
$(this.html(replaceText);
}
});
});
查看更新的小提琴由于我的公司
当div中有一个
标记时,我猜您的HTML
类似于My Company
,因此在My
和Company
之间有两个空格,您的字符串替换不适用于此
因此,必须首先用单个空间替换多个空间
也在这些条件下工作
My <font color="something">C</font>ompany
My <span style="something">C</span>ompany
演示:如果“我的内容”周围有HTML标签,您需要首先将其去掉
然后用纯文本搜索它
如果找到了,你可以在最后附加一个商标
这还将保留“我的内容”的原始HTML标记
条件:您必须在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>
基本上,我将创建一个HTML条函数来删除文本周围的额外HTML标记,然后按照下面的代码进行搜索
$(function(){
$('#content').each(function() {
var text = $(this).html();
console.log(text);
console.log(stripHTML(text));
if(stripHTML(text).indexOf("My Company")>-1)
{
alert("FOUND");
$(this).html($(this).html() + "®");
}
});
function stripHTML(dirtyString) {
var container = document.createElement('div');
container.innerHTML = dirtyString;
return container.textContent;
}
});
如果希望页面上有多个具有相同样式的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);
});
$(“#内容”)。每个(函数(){
var text=$(this.html();
text=text.replace(/My Company/g,“My Company®”);
text=text.replace(/My(]*>C\ompany)/g,“My Company®”);
text=text.replace(/My(]*>C\ompany)/g,“My Company®”);
$(this).html(文本);
});
id=content的div有多少个?
你不能有多个#content id。你能亲自展示你的html部分吗?我希望修复底层内容,而不是笨拙的jasvascript修复。如果我的公司
是一个样式一致的东西,请使用适当的类将其封装在
中,然后可以使用:first letter
()为第一个字母设置样式,并在之后使用:添加HTML格式的TM或CSS格式的TM。没有javascript,没有内容闪存或文本回流。@LelioFaieta我只有一个id为content
的div。只有当字符串正好是“我的公司”时,这才有效。OP问了一些不同的问题,PP想在我的公司内部内容后添加商标符号。我想这会管用的。请建议。他不想改变它的结构。这也是它的工作方式。当HTML像这样时,Workup也要求附加它。My Company或My Company
Hi我已经在本地签了名。这对我来说很好。如果有任何疑问,请制作一个js fiddle链接,我们将对此进行处理,但这将改变他以前文本中“C”的结构。span将被文本替换,对吗?@downvoter:请说明您的downvote原因?可能是更新的代码也会保留html?如果我错了,请纠正我hi@IdentityUnkn0wn如果我的HTML结构不是这样的哦…是的,可能是可以用一些复杂的正则表达式来完成的,这不是我的强项,但是如果它在同一个标记中,可能是这样的:(这是替换第二个“我的公司”的HTML标记)