我有这个HTML:
<p>
(rcvd)
<a href="linkhere">Title</a>
by Person,
<br></br>
- More text
</p>
我想将(rcvd)的颜色更改为绿色。我尝试了以下方法:
这会将整行更改为绿色但保留链接
$( “号码:含有( '(RCVD)')”)ATTR( “样式”, “颜色:绿”);
这会将rcvd部分更改为绿色,但会删除标题链接
$("p").each(function() {
var text = $(this).text();
text = text.replace("(rcvd)", "<span style='color:green;'>(rcvd)</span>");
$(this).html(text);
});
这没有任何作用,但我认为这是我想要的解决方案,我在某个地方进行了一些小调整
$(p).html($(p).html().replace("(rcvd)","<span style='color:green;'>(rcvd)</span>"));
任何指针都欢迎(我仍然是JQuery的新手,并且正在努力学习,所以我喜欢解释为什么你提出你的建议。
答案 0 :(得分:4)
我自己的建议是:
$('p').html(function(i,h){
return h.replace('(rcvd)', '<span class="greenColoured">(rcvd)</span>');
});
使用CSS提供样式:
.greenColoured {
color: green;
}
如TrueBlueAussie所述(在下面的评论中),我没有解释传递给html()
方法的匿名函数中的参数:function(i, h)
:
html()
方法基本上遍历选择器返回的集合(在这种情况下是所选的所有段落);不使用匿名函数,每个p
元素将具有相同的HTML集。使用该函数,使用i
和v
(可以命名,但是请允许您访问集合中当前迭代元素的索引(i
),并且v
(第二个参数)返回当前的'value'(在这种情况下,当前节点的现有innerHTML
被迭代)。
如上所述,这些参数可以根据您的喜好调用,对我来说i
和h
是习惯性的(i
代表'index'而h
代表HTML
}} 在这种情况下);只要你记得(就像传递给jQuery方法的许多其他匿名函数一样), first 是索引,第二个是'current-value'。
参考文献:
答案 1 :(得分:3)
这将选择P中的第一个节点(恰好是文本节点)并设置样式:
$("p").contents().first().wrap("<span style='color:green'></span>");
<强>已更新即可。好的,这是使用类:
.rStyle {
color:green;
}
$("p").contents().first().wrap("<span/>").parent().addClass("rStyle");
答案 2 :(得分:0)
尝试将标记名称包装在引号(jsFiddle)中:
$("p").html($("p").html().replace("(rcvd)","<span style='color:green;'>(rcvd)</span>"));
此时您将变量p
传递给jQuery函数。 Presumable p
未定义,因此您要么得到Javascript错误,要么只是一个空的jQuery对象。
正如其他人所说,执行此操作的标准方法是将rvcd包装在一个范围内:
<p>
<span class="style-this">(rcvd)</span>
<a href="linkhere">Title</a>
by Person,
<br></br>
- More text
</p>
和
$(".style-this").css("color", "green");
答案 3 :(得分:0)
使用css()
并为您的<p>
代码指定一个类:
<p id="myGreenClass">(rcvd)</p>
这个jQuery代码:
$('.myGreenClass').css('color', 'green');