1

我有一些 html 例如

<div class="abstract">Nov 12, 2009 <b>...</b> Tender and flavorful, 
<b>veal</b> cutlets are lean and quick-cooking. If <b>veal</b> 
isn't for you though, feel free to substitute chicken cutlets 
for a classic <b>...</b>
</div>

我想在开始时以不同的方式设置该日期的样式。

我想我可以用类似的东西获得第一个 b 标签

$('.abstract b:contains("...")).css(-something-)

但是这前面的文字呢?

4

3 回答 3

1

您需要将日期包装在一些寻找的 HTML 标记中,以便您可以对其应用样式规则,否则浏览器无法知道您想要以一种方式设置什么样式,以及另一种样式。

之后你就不需要任何 jQuery 了;只需应用 CSS 规则:

<div class="abstract"><span>Nov 12, 2009</span> <b>...</b> Tender and flavorful, 
<b>veal</b> cutlets are lean and quick-cooking. 

CSS:

.abstract>span {
   color: red;
}
于 2013-06-13T19:39:43.370 回答
1

如果您绝对无法更改 HTML,则可以执行以下操作:

$('.abstract').contents().filter(function() {
    return this.nodeType === 3 && $(this).next().is('b:contains("...")');
}).first().wrap('<span>').parent().addClass('date');

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

如果日期始终是第一个文本节点,您可以去掉过滤器中的第二个条件:

$('.abstract').contents().filter(function() {
    return this.nodeType === 3;
}).first().wrap('<span>').parent().addClass('date');
于 2013-06-13T19:37:33.443 回答
1

我会将该文本封装在某种跨度中,例如<div class="abstract"><span class='date-year'>Nov 12, 2009</span><b>...</b>,然后您可以使用$(".abstract .date-year"). 如果您无权访问该页面,则可以使用 获取内部文本$(".abstract").html(),查找 的第一个实例<b>,然后将其子串出来。

于 2013-06-13T19:36:34.653 回答