假设您对我的帖子感到恼火,并希望隐藏Stack Overflow的所有评论。我知道如何创建自定义CSS来隐藏我的用户名:
a[href$="what"] {
display:none !important;
}
不幸的是CSS不允许我引用父元素,所以这将留下评论的文本。
如何将父级或前级兄弟隐藏到该链接标记?
我不是要求CSS选择器!我知道它不存在。请在结束前阅读问题(并在提供答案之前告诉我在我的问题中已经提到的内容)。
我问你如何在没有相关CSS选择器的情况下选择DOM元素。我相信有JS解决方案,但我无法使用它们。也许还有其他选择,因此我并没有特别要求JS。如果你告诉我如何用PHP解析页面并通过另一个域显示它,那对我来说完全没问题。
Greasemonkey可能会这样做的提示根本没有帮助。解释如何做到这一点。让它在您的机器上工作并发布详细说明。我无法使用任何可用的脚本。
答案 0 :(得分:2)
你不能,因为CSS无法选择父节点并为其应用样式。你需要使用JavaScript。如果专门用于创建用户可修改的布局,可能通过Greasemonkey Firefox plugin(或另一个浏览器中的类似插件)。
答案 1 :(得分:1)
选择器级别4草稿定义了选择器的subject,允许您使用
!* > a[href$="what"] { }
!* + a[href$="what"] { }
但是,AFAIK浏览器尚不支持它。
并且还注意到它是complete选择器配置文件的一项功能,因此它对性能不敏感。
答案 2 :(得分:0)
使用JavaScript很容易:
var comments = [].slice.call(document.querySelectorAll('a[href$="what"]'))
.map(function(el){ return el.parentNode; })
.filter(function(el){ return el.classList.contains('comment-body'); });
它确实:
querySelectorAll
的所有锚点,并将生成的NodeList
转换为Array
。parentNode
。答案 3 :(得分:0)
安装Greasemonkey,然后单击this link以安装脚本。
该脚本使用jQuery,它的主体只有一行:
$('.comment:has(a.comment-user[href$="/what"])').remove()
说明:
上面的代码可以remove
任何类comment
和has
的元素作为其后代,是一个类comment-user
并以/what
结尾的链接。