2014-11-19 4 views
0

У меня есть набор вкладок с текстом и значками. Активные вкладки имеют белый фон с синим текстом и значками. Другие вкладки противоположны. Я хочу просто динамически менять значки, когда они активны. Синий значок работает, но не изменяется на белый, если он не активен.Динамическое изменение изображения с помощью jQuery

Вот что у меня есть:

if ($('#project_details').hasClass('active')) { 
    $('#tab1').attr('src','img/blue.png'); 
} else { 
    $('#tab1').attr('src','img/white.png'); 
} 

HTML:

<li id="project_details" class="active"> 
<img src="" id="tab1">Project Details</li> 
+1

Код выглядит хорошо, мне просто интересно, какое событие запускает ваш код для выполнения? – fpsColton

+0

Вам понадобится: 1) использовать вместо этого CSS и фоновые изображения, которые не зависят от событий, или 2) поделиться каким механизмом вы используете для вкладок, чтобы мы могли помочь построить обратный вызов события. – isherwood

+0

Я использую загрузочный jquery для вкладок (http://getbootstrap.com/javascript/#tabs) –

ответ

1

active класса уже добавлен и удален из элемента автоматически в браузере, это происходит потому, что это CSS псевдо-класс , Ваш код для изменения атрибута src выглядит отлично, но я не вижу ничего, что могло бы привести к запуску вашего кода. (Примечание: это ответ на предыдущие ответы, говорящие OP, чтобы добавить/удалить active вручную.)

Когда вы хотите выполнить эту инструкцию if? Когда пользователь нажимает на другую вкладку? Если это так, я бы использовал jQuery для создания обработчика события для события click вкладки.

+0

Я попробовал '.on ('click')', но это не сработало. это то, о чем вы говорите? –

+0

В самом деле, я бы рекомендовал вам идентифицировать общий элемент, который группирует ваши вкладки, например родительский элемент 'ul'. Вы можете создать селектор, такой как $ ('ul li'). On ('click', function (e) {// code}); Таким образом, любой щелчок на 'li' внутри вашей' ul' вызовет блок кода. – fpsColton

+0

Работал! Благодаря! –

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