在带有ID的段落中设置字符串样式

时间:2013-09-24 13:25:17

标签: javascript jquery html

我有这个HTML:

<p>
   (rcvd)                           
<a href="linkhere">Title</a>
   by Person,                          
<br></br>
   - More text            
</p>

我想将(rcvd)的颜色更改为绿色。我尝试了以下方法:

  1. 这会将整行更改为绿色但保留链接

    $( “号码:含有( '(RCVD)')”)ATTR( “样式”, “颜色:绿”);

  2. 这会将rcvd部分更改为绿色,但会删除标题链接

    $("p").each(function() {
        var text = $(this).text();
        text = text.replace("(rcvd)", "<span style='color:green;'>(rcvd)</span>");
        $(this).html(text);
    });
    
  3. 这没有任何作用,但我认为这是我想要的解决方案,我在某个地方进行了一些小调整

    $(p).html($(p).html().replace("(rcvd)","<span style='color:green;'>(rcvd)</span>"));
    
  4. 任何指针都欢迎(我仍然是JQuery的新手,并且正在努力学习,所以我喜欢解释为什么你提出你的建议。

4 个答案:

答案 0 :(得分:4)

我自己的建议是:

$('p').html(function(i,h){
    return h.replace('(rcvd)', '<span class="greenColoured">(rcvd)</span>');
});

使用CSS提供样式:

.greenColoured {
    color: green;
}

JS Fiddle demo

TrueBlueAussie所述(在下面的评论中),我没有解释传递给html()方法的匿名函数中的参数:function(i, h)

html()方法基本上遍历选择器返回的集合(在这种情况下是所选的所有段落);不使用匿名函数,每个p元素将具有相同的HTML集。使用该函数,使用iv(可以命名,但是请允许您访问集合中当前迭代元素的索引(i),并且v(第二个参数)返回当前的'value'(在这种情况下,当前节点的现有innerHTML被迭代)。

如上所述,这些参数可以根据您的喜好调用,对我来说ih是习惯性的(i代表'index'而h代表HTML }} 在这种情况下);只要你记得(就像传递给jQuery方法的许多其他匿名函数一样), first 是索引,第二个是'current-value'。

参考文献:

答案 1 :(得分:3)

这将选择P中的第一个节点(恰好是文本节点)并设置样式:

$("p").contents().first().wrap("<span style='color:green'></span>");

演示:http://jsfiddle.net/jrAWn/

<强>已更新即可。好的,这是使用类:

.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');