更新了答案,现在看到了example site。
短版
当前的 HTML 不能用 CSS 来完成。如果您可以向 parent .gallery-item 元素添加一个类,则可以使用 CSS 来完成。
加长版
CSS 规则
.gallery-item > a[href*='DEMO'] {
display:none;
}
不适用于从站点提取的以下 HTML:
<div class="column gallery-item " id="product-3779102">
<a href="/p/BoSH-Mesh-Texture-Changer-DEMO/3779102" class="product-image"><img alt=".:*BoSH*:. Mesh Texture Changer DEMO" src="https://d3qcduphvv2yxi.cloudfront.net/assets/5972439/view_small/T%20changer%20DEMO.jpg?1343233084"></a>
<a href="/p/BoSH-Mesh-Texture-Changer-DEMO/3779102" class="product-title">.:*BoSH*:. Mesh Texture Changer DEMO</a>
<div class="item-price">
<span class="price">L$0</span>
</div>
<div class="item-description">
</div>
</div>
因为有一个规则更大 CSS specificity 覆盖display 属性。即
.product-listing.gallery .gallery-item a.product-image {
display: block;
}
虽然添加 !important 应该可以工作,但更好的选择是为 demo 链接提供一个特定的类,这样可以更轻松地定位它们或一个选择器到您的规则以使您的规则具有更大的特异性。例如,id 赋予规则更多的权重:
#main-content a[href*=DEMO] {
display:none;
}
主要的问题是即使你直接使用上面的CSS来隐藏<a>,你真正想要做的就是隐藏整个item。这在 CSS 中是不可能的,因为它目前没有 parent 选择器。您真的想隐藏在 href 某处具有不区分大小写的“演示”的锚的父级。
在 jQuery(包含在您的页面中)中,可以这样做:
$('.gallery-item').filter(function() {
if ($(this).find('a[href]').text().toLowerCase().indexOf('demo') !== -1) {
$(this).hide();
}
});
但是,即使您设法隐藏了项目,图库也会预先呈现为行和列,因此删除一个或多个只会留下空间,而项目应该真正重排以占用一些隐藏的空间。
我建议考虑使用“演示”为项目添加一个类,以便可以使用 CSS 隐藏项目,但您还需要重新设计布局,以便剩余项目在页面上重排(如果你关心那个!)
希望这会有所帮助。
原答案
来自documentation
选择器中的属性名称和值是否区分大小写取决于文档语言。
属性选择器不正确。您需要在 CSS 选择器中使用 DEMO 来匹配 HTML 中的 DEMO。请参阅following example,其中只有第一个链接会匹配 CSS 规则。
CSS
.gallery-item > a[href*='DEMO'] { color: red }
HTML
<div id="product-4106908" class="column gallery-item ">
<a class="product-image" href="/p/Mesh-DEMO/4106908">foo</a>
</div>
<div id="product-2" class="column gallery-item ">
<a class="product-image" href="/p/Mesh-demo/2">foo</a>
</div>