2016-09-29 3 views
1

Это то, что мой HTML выглядит (весело ... Я знаю):Как выбрать только один конкретный элемент dom, у которого нет класса или идентификатора ПОСЛЕ другого конкретного?

<p itemscope="" itemtype="http://schema.org/PostalAddress" itemprop="address" class="adr"> 
    <span itemprop="streetAddress" class="street-address">6306 N Cicero Ave</span> 
    <span itemprop="addressLocality" class="locality">Chicago,&nbsp;</span> 
    <span itemprop="addressRegion">IL</span>&nbsp; 
    <span itemprop="postalCode">60646</span> 
</p> 

То, что я хочу, чтобы выбрать индивидуально, являются государственной службы и пролет почтовый индекс ... ака

<span itemprop="addressRegion">IL</span> 

И

<span itemprop="postalCode">60646</span> 

Учитывая, что продолжительность перед ним имеет класс:

<span itemprop="addressLocality" class="locality">Chicago,&nbsp;</span> 

И те, которые меня интересуют, не имеют ни class, ни id, как я могу выбрать их обоих?

+0

'диапазон [itemprop =» addressRegion "] {...}'? –

+0

@AlexK. Бинго. Это работает. Большое спасибо. Если вы добавите его в качестве ответа, я соглашусь с ним. – marcamillion

ответ

1

Вы можете использовать Attribute Selector:

span[itemprop="addressRegion"], span[itemprop="postalCode"] { 
    color: red; 
} 
+0

Спасибо. Это отлично работает для меня! – marcamillion

1

Вам просто нужно использовать свойство attribute.

https://jsfiddle.net/25euucb0/

[itemprop~=addressRegion] { 
    border: 5px solid yellow; 
} 

[itemprop~=postalCode] { 
    border: 5px solid red; 
} 
+0

не '[itemprop =" addressRegion "]'? –

+0

~ селектор должен обратиться, если он хочет их всех – Keith

+0

По какой-то причине анализатор задыхается от использования этого свойства атрибута. Для чего это стоит, я не делаю обычный выбор CSS. Я использую парсер HTML в Ruby, который анализирует HTML, и я выбираю оттуда. Таким образом, возможно, что лексер не знает, как этот способ выбора. – marcamillion

1

Используйте селектор (+), он находит следующий родственный элемент.

EDIT: Просто используйте селектор (~) siblings, проверьте его.

Проверьте это: https://jsfiddle.net/4xzyva6L/

HTML

<p itemscope="" itemtype="http://schema.org/PostalAddress" itemprop="address" class="adr"> 
    <span itemprop="streetAddress" class="street-address">6306 N Cicero Ave</span> 
    <span itemprop="addressLocality" class="locality">Chicago,&nbsp;</span> 
    <span itemprop="addressRegion">IL</span>&nbsp; 
    <span itemprop="postalCode">60646</span> 
</p> 

CSS:

.locality ~ span{ 
    background-color:lime; 
} 
+0

Странно, что '.locality + span' работает для меня ... но' .locality + span + span' нет. Так что этот ответ на полпути. Любые другие предложения? – marcamillion

+0

Вы проверили фрагмент? (+) Находит соседнего брата, в каком браузере вы работаете? –

+0

Я проверил фрагмент. Я вижу, что он работает для вас, но не уверен, почему он не работает в моем проекте. Я использую Chrome на OS X. – marcamillion

0

Использование CSS псевдо-класс :not()

Установите селектор атрибута в качестве аргумента в not() селектор что-то вроде span:not([atttribute])

.adr span:not([class]){ 
    background-color:yellow; 
    } 

.adr span:not([class])+span{ 
    background-color:orange; 
} 

Проверить Working Demo