2013-06-04 3 views
1

рассмотрят следующий HTML:JQuery селектор класса, которые имеют конкретный immediatey узла после

<div class="a"> pick me 1</div> 
    <div class="b"> stuff </div> 
    <div class="a"> stuff </div> 
    <div class="a"> stuff </div> 
    <div class="a"> pick me 2</div> 
    <div class="b"> stuff </div> 
    <div class="a"> stuff </div> 
    <div class="c"> stuff </div> 
    <div class="b"> stuff </div> 

Я хотел бы, чтобы выбрать только див, которые имеют .a и имеют .b сразу после, так что я буду получать только забрать меня DIVS

ответ

9

Вам нужно начать с .b элементов и step back к их предыдущих .a элементов:

$('.b').prev('.a'); 

jsFiddle demo

Обратите внимание, что это не включает элементы .b, только элементы .a. С другой стороны, селектор, такой как .a + .b, будет соответствовать той же структуре, но вместо этого даст вам .b элементов.

+0

Я не думаю, что будет работать но хорошо. Узнал что-то! :) – jammykam

+0

OP хочет * "только те div, которые имеют' .a' ** и ** '.b' сразу после. – mattytommo

+0

@mattytommo OP хочет отмечать теги« pick me », так как этот ответ работает для –

1

я украл половину от @BoltClock, тем не менее, я думаю, что это то, что вам нужно:

$('div + .b + .a').prev().prev().css('color', 'red'); 

Особенно, если вы хотите, чтобы сделать их в красный цвет ...

Смежные вопросы