CSS 选择器选择 div 类名的一部分
Posted
技术标签:
【中文标题】CSS 选择器选择 div 类名的一部分【英文标题】:CSS selector select some part of div class name 【发布时间】:2014-08-28 21:45:53 【问题描述】:在 div 类中选择一部分文本:
<div class="enabled_disabled disabled">
<div class="enabled_disabled">
<div class="enabled_disabled">
<div class="enabled_disabled">
<div class="enabled_disabled disabled">
我有那些 div 标签,是否有任何 xpath 语法或 fizzler CSS 选择器语法来选择仅具有 enabled_disabled 的那些 div 标签(中间的 3 个)?不是那些 enabled_disabled disabled
var html = new HtmlDocument();
html.LoadHtml(getitems);
var doc = html.DocumentNode;
var items = (from r in doc.QuerySelectorAll("div.enabled_disabled:not(.disabled)")
let Name = r.InnerHtml//QuerySelector("div.enabled_disabled div.title_bar div.rate_title span.name").InnerText.CleanInnerText()
select new
CName = Name
).ToArray();
【问题讨论】:
你到底想要什么? 我不确定我是否理解正确,但你可以看到这篇文章来获取类名:***.com/questions/22004818/… @bluewonder - 看看其他答案也可能对你有帮助 【参考方案1】:Fizzler
要选择仅类enabled_disabled
的元素,您可以使用:
[class='enabled_disabled']
使用:not
选择器是not available in vanilla Fizzler,但是如果你抓住FizzlerEx就可以使用
XPath
要选择仅类enabled_disabled
的元素,您可以使用:
div[@class='enabled_disabled']
在普通的旧 CSS 中
如果 div 的指定类以enabled_disabled
开头:
div[class^=enabled_disabled ]
如果 div 的指定类包含 enabled_disabled
div[class*=enabled_disabled ]
如果 div only 有类 enabled_disabled
div[class=enabled_disabled ]
如果 div 有类 enabled_disabled
而没有类 disabled
div.enabled_disabled:not(.disabled)
鉴于您在问题中列出的 HTML,最后两个中的任何一个都适合您。
more on attribute selectors from MDN,和,more on :not()
【讨论】:
SO 应该提供要标记为收藏的答案,而不是问题。+1。 感谢您的回复,但是,我使用 doc.QuerySelectorAll (Fizzler) 和 doc.SelectNodes (XPATH) 尝试了最后两个,但出现以下错误: Xpath : ExceptionMessage: "'div. enabled_disabled:not(.disabled)' 的令牌无效。”和 Fizzler : ExceptionMessage: "未知的功能伪 'not'。仅支持 nth-child 和 nth-last-child。" OP 只要求选择中间元素中的 3 个 @SW4 是的,我尝试了 div[class='enabled_disabled'] 和 div.enabled_disabled 但它返回了所有 div,其中还包括(禁用)单独站立 回复:code.google.com/p/fizzler/issues/detail?id=33,您是否会考虑使用 FizzlerEx?fizzlerex.codeplex.com【参考方案2】:你可以使用这个选择器来匹配这个类并避免另一个。
$(".enabled_disabled:not('.disabled')");
你可以从$()
中取出内容
它是valid css selector
.enabled_disabled:not(.disabled)
【讨论】:
【参考方案3】:在 css 中使用 not()
选择器。:not pseudo-class
表示其参数未表示的元素。
.enabled_disabled:not(.disabled)
FIDDLE
更多关于
SEE THE LINK
【讨论】:
OP 在 XPath / Fizzler 之后,:not
不支持
@SW4 是的,我正在使用 Xpath / Fizzler,这是我收到的错误消息:消息:“发生错误。”,异常消息:“'.enabled_disabled:not(.disabled)'有一个无效的令牌。", ExceptionType: "System.Xml.XPath.XPathException",
我也试过 div[@class='enabled_disabled'] 但它返回所有 div 标签@Sudharsan以上是关于CSS 选择器选择 div 类名的一部分的主要内容,如果未能解决你的问题,请参考以下文章
markdown CSS选择器 - 匹配部分类名(和其他属性)!!!