То, что это делает, это «перебирает все a-элементы и окрашивает их, если панель имеет класс« current »».Ваша проблема: Если у панели есть класс «current», то все a-элементы зеленого цвета. Что вы хотите: ЕСЛИ у панели есть текущий класс, ищущий соответствующий a-элемент (принадлежащий панели) и addClass зеленого цвета.
Итакэто не проверяет, должен ли отдельный a-элемент получать класс "greens", в зависимости от того, какая панель активна в данный момент ("current").
Без понимания остальной части кода, которую вы должны / могли бы сделать 1из 2 вещей;
- Переберите панели и добавьте класс "Greens" к соответствующему a-элементу.
- Loop по a-элементам (как вы делаете сейчас) и проверьте соответствующий элемент панели (элемент панели, который принадлежит элементу a).
В зависимости от вашего кода это может быть так просто:
$panel.find("a").addClass('greens');
---- edit ---
Хотя уже есть принятый ответ, вы могли бы сделать это с несколько более простым для понимания JS и HTML (без циклов и всего).На панели вы можете добавить атрибуты данных с именами, которые соответствуют a-элементам, которые вы хотите сделать зелеными / активными.Когда вы делаете панель активной, вы также можете выбрать один a-элемент, соответствующий вашей панели (поэтому панель с data-соответствующим-link = "hero" относится к a-элементу с data-id = "hero"),и просто добавьте класс зеленый к нему.Вы можете сначала выбрать все a-элементы и удалить зеленый класс или выбрать единственный a-элемент с зеленым классом и удалить этот единственный.
<panel class="hero current" data-corresponding-link="hero"></panel>
<panel class="other-panel" data-corresponding-link="other-panel"></panel>
<a data-id="hero" href="#hero" class="dot"><span class="show">dot</span></a>
<a data-id="other-panel" href="#three-split" class="dot"><span class="hide">dot</span></a>
js:
$(window).scroll(function(){
var cutoff = $(window).scrollTop();
panel.each(function(){
if($(this).offset().top + $(this).height() > cutoff){
panel.removeClass('current');
$(this).addClass('current');
$(".green").removeClass("green") //Select all the green classes and remove the class green (you could scope this further down to a.green or something).
$("data-id='"+panel.dataset.correspondingLink+"']").addClass("green") //based on the panels corresponding-link data-attribute select the element(s) that have this data-attribute data-id set to "hero" and addClass green
return false;
}
})
}