Похоже, вы хотите добавить класс ко всем родителям элементов $highlights
, ожидайте, что в данный момент находится:
$highlights.not(this).parent().addClass('lowOpacity');
Эта строка кода заменяет цикл целом for
.
Ссылка: not
Я думаю, вам также нужно снова удалить lowOpacity
из элементов. Вы можете уменьшить свой код до этого:
var $highlights = $j("div.ab-highlights ul li a");
$highlights.hover(function () {
$j(this).children().toggleClass('active');
$highlights.not(this).parent().toggleClass('lowOpacity');
});
Объяснение, почему ваш код не работает:
$highlights.parent()[i]
возвращает элемент DOM, но addClass
- это метод jQuery. Таким образом, вам придется снова передать его в jQuery или использовать eq
[docs] вместо:
$highlights.parent().eq(i).addClass('lowOpacity');
Для этого нужно получить все родительские элементы элементов в $highlights
и затем выбрать i
th.
Другим способом было бы сначала выбрать i
th элемент в $highlights
, а затем его родительский элемент.
Но, как вы видели выше, это намного проще, и вам вообще не нужно зацикливаться.