在下面的例子中,我试图定位“$ 59.00”
<div class="ProductPriceRating">
<em>
<strike class="RetailPriceValue">$69.00</strike>
$59.00
</em>
</div>
我有点坚持这个。
答案 0 :(得分:3)
除非您愿意更改DOM或者愿意覆盖,否则不能这样做。
因此,您需要使用span
元素包装文本,而不是像
div.ProductPriceRating > em > span {
}
否则,如果您无法更改DOM而不是需要使用两个选择器,首先将样式应用于em
,下一个将使用strike
覆盖该样式
div.ProductPriceRating > em {
color: red;
}
div.ProductPriceRating > em > strike {
color: black;
}
您可以使用的另一种方式是:not
,但如果您使用color
而不是继承会导致问题
div.ProductPriceRating em:not(.RetailPriceValue) {
background: red;
}
正如您所评论的那样,您愿意使用jQuery,而不是在这里,我们使用jQuery包装节点。
$(".ProductPriceRating em").contents().filter(function() {
return this.nodeType != 1; //or return this.nodeType == 3; <-- Preferable
}).wrap("<span></span>");
答案 1 :(得分:1)
jQuery怎么样?我可以使用Jquery进行目标,然后包装元素 在它周围?
好吧,你可以选择文本节点并添加一个包装器,如下所示:
$('.ProductPriceRating')
.find("em")
.contents()
.filter(function() {
return this.nodeType === 3; // filter the text node
}).wrap("<span></span>");
<强> WORKING DEMO 强>
<强> CSS:强>
.ProductPriceRating span {
color: red;
}
答案 2 :(得分:0)
无法在CSS中选择特定文本,但在您的情况下,您可以覆盖CSS属性。
以下是一个例子:
.ProductPriceRating em{font-weight:700; font-size:20px; color:darkgreen}
.ProductPriceRating em .RetailPriceValue{color:#AAA; font-size:11px}
<强>增加:强>
正如您在上面的评论中提到的那样,您希望使用jQuery来完成它,就像使用元素包装文本一样。这是一个例子:
$(".ProductPriceRating").each(function(c, obj){
obj = $(obj).find(">em"),
retailPrice = obj.find(".RetailPriceValue").detach(),
newNode = $("<b/>").text($.trim($(obj).text()));
obj.html(newNode).prepend(retailPrice);
});
在那里查看CSS,两者都是分开工作......