2013-08-02 5 views
-5

У меня проблема с функцией .index() в jQuery. из three с в two пользователь нажимает, один из threeB показаны.index() только для одного экземпляра класса

<div class="one"> 
    <div class="two"> 
     <div class="three"></div> 
     <div class="three"></div> 
     <div class="three"></div> 
    </div> 
    <div class="threeB"></div> 
    <div class="threeB"></div> 
    <div class="threeB"></div> 
</div> 

<div class="one"> 
    <div class="two"> 
     <div class="three"></div> 
     <div class="three"></div> 
    </div> 
    <div class="threeB"></div> 
    <div class="threeB"></div> 
</div> 

<div class="one"> 
    <div class="two"> 
     <div class="three"></div> 
     <div class="three"></div> 
     <div class="three"></div> 
    </div> 
    <div class="threeB"></div> 
    <div class="threeB"></div> 
    <div class="threeB"></div> 
</div> 

В соответствии с которым:

План DOM. Я хотел сделать это с помощью функции .index(), но она терпит неудачу для всех, кроме первых. Во втором классе one два three имеют индексы 3 и 4 (вместо желаемых 0 и 1). С другой стороны, .eq() для threeB s, похоже, работает по своему усмотрению.

Какой-либо опрятный способ решить это, не подсчитывая, сколько three было там до div?

+3

Почему бы тебе не показать нам селектор, который вы используете, и скажите нам, что вы на самом деле * * пытается выбрать? – George

+0

где ваш код jquery, который вы отметили, но не jquery –

ответ

1

Это работает так:

$('.three').click(function(){ 
    $(this).parent().parent().find('.threeB').eq($(this).index()) 
     .css('background','green'); 
}); 

Проверить здесь: jsFiddle

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