Как правильно использовать функцию eq для нескольких классов? Поскольку div с классом «a» не является последующим, я не могу использовать функцию «eq» для обновления своего класса. Если divs с классом «b» удаляются, функция работает отлично. Вот скрипка https://jsfiddle.net/9w8zhg7d/4/. У меня есть следующий HTML:Использование jQuery '.eq()' с несколькими классами
<div class="a current">
</div>
<div class="a">
</div>
<div class="b">
</div>
<div class="b">
</div>
<div class="a">
</div>
<div class="a">
</div>
и следующий JavaScript:
Class = {
a: ".a",
highlighted: ".a.current",
init: function() {
$(this.a).click(this.toggleA.bind(this));
},
toggleA: function(e) {
e.preventDefault();
$(this.highlighted).removeClass("current");
var target = $(e.target);
var clickedA = target.closest(this.a);
var clickedIndex = clickedA.index();
$(".a").eq(clickedIndex).addClass("current");
console.log(clickedIndex);
$(".b").eq(clickedIndex).css("display", "inline-block");
}
};
Class.init();
Любая помощь очень ценится!
'.eq()' вообще не работает с * classes *, он работает над тем, какие элементы находятся в вашем объекте jQuery. Поэтому, если вы хотите применить его во всех элементах '.a' и' .b', просто выберите их все: '$ (". A ,.b "). eq (x)'. (Сказав это, я не понимаю, что вы пытаетесь сделать. В вашем примере есть четыре a и только два b, поэтому я не вижу, как эти элементы относятся к каждому другое. Я не понимаю, как вы используете '.closest()', но это выглядит неправильно, потому что в html показано, что все элементы являются братьями и сестрами.) – nnnnnn
Мне любопытно, что вы пытаетесь выполнить? может быть, что использование '.eq' может быть не лучшим вариантом, если мы знаем, что вы пытаетесь выполнить. –
Если вы посмотрите на скрипку, вы увидите, что щелчок на первых двух а работает правильно, но третий и четвертый a не получает «текущий» класс при нажатии. Remove, div и функция b работают для всех A. Я хочу, чтобы он работал таким образом с помощью div 'b' в миксе. – JordanBarber