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 类名的一部分的主要内容,如果未能解决你的问题,请参考以下文章

CSS 选择器 选择 拥有多个类名 的元素

jquery选择器

选择器

markdown CSS选择器 - 匹配部分类名(和其他属性)!!!

markdown CSS选择器 - 匹配部分类名(和其他属性)!!!

css中两个不同的类名(class)怎么同时选择?