Ответ на новый вопрос:
$j(this).show()
покажет элемент.
Вы имеете в виду
if($j(this).is(':visible'))
Кроме того, в ваших селекторах вы хотите написать $j(this)
, а не $j('#banner-content img:visible')
.
Наконец, код будет легче читать, если вы создадите отдельную переменную для хранения элемента <a>
, например:
var link = $j('#page-tabs li a.' + $j(this).attr('class'));
if ($j(this).is(':visible'))
link.addClass('active');
else
link.removeClass('active');
Ответ на старый вопрос:
Ваша проблема в том, что вы звоните hasClass
по всем ссылкам внутри внутреннего each
вызова. Это проверит, имеет ли любой элементов этот класс, а не только текущий.
Вам нужно изменить его на if($j(this).hasClass(bcClass))
.
Однако ваш код излишне сложен, и его можно написать гораздо проще:
$j('#page-tabs a.'
+ $j('#banner-content img:visible').attr('class'))
.addClass('active);
Этот код вызывает $j('#banner-content img:visible').attr
, чтобы найти класс видимого элемента <img>
, а затем помещает класс непосредственно в селектор jQuery.
Обратите внимание, что вы, вероятно, также хотите позвонить removeClass
.