2014-02-25 5 views
0

У меня есть DIV построен так:добавить/удалить класс на DIV, если элемент содержит определенный атрибут

<div class="navigation fixed-top"> 
<a href="#home" class="active">Home</a> 
<a href="#about">About</a> 
<a href="#contact">Contact</a> 
</div> 

Когда я щелкая на About он автоматически добавляет class="active". Например, когда href="#home" d содержит class="active" Я хочу изменить <div class="navigation navigation-fixed-top"> на <div class="navigation navigation-fixed-bottom">.

Я пытаюсь это:

if($('a[href="#home"]').hasClass('active')) 
{ $(".navigation").toggleClass("fixed-bottom fixed-top"); } 

И выход выглядит так: class="navigation navigation-fixed-top fixed-bottom fixed-top" Казалось, что только добавляет эти классы.

+1

'.not()' возвращает объект jQuery. Используйте '.is (". Active ") === false' –

ответ

1

Как насчет?

var isActive = $('a[href="#home"]').hasClass('active'); 
$(".navigation") 
    .toggleClass("navigation-fixed-bottom", isActive) 
    .toggleClass("navigation-fixed-top", !isActive); 
+0

просто попробовал это, и он добавляет 'fixed-bottom' после' fixed-top', выход выглядит так: 'navigation navigation-fixed-top fixed-bottom', и он должен выглядеть как' navigation navigation-fixed-bottom' – agis

+0

Я отредактировал свой ответ. 'navigation',' fixed-bottom' и 'navigation-fixed-bottom' являются четкими и полностью не связанными классами. Вы не можете переключать их частично, если это то, что вы хотели. – sabof

+0

Теперь я получаю 'getSyntaxError: Неожиданный токен .' – agis

1

Вы можете переключаться навигационный класс легко с помощью toggleClass с несколькими классами:

$(".navigation").toggleClass("fixed-bottom fixed-top"); 

Предполагая, что DIV имеет только один из этих классов, этот код будет удалить его и добавить другой. Запуск его снова восстановит исходное состояние и так далее.

+0

Я только что попробовал, но кажется, что добавление этих классов не делает ничего другого. Я отредактировал свой вопрос, пожалуйста, посмотрите ... – agis

+0

более точно вывод выглядит так: «навигационная навигация фиксированная-фиксированная-нижняя», и он должен выглядеть так: «навигационная навигация-фиксированная-нижняя» – agis

+0

@ Alecs: Ну, какие классы вы используете * точно *? Вы написали 'fixed-top' в вопросе, вы имели в виду' navigation-fixed-top'? – Jon

0

Я исправил вам что-то в JSBin:

http://jsbin.com/hawugefi/2/edit

$(function(){ 
    if($('a[href="#home"]').is('.active')) { 
    $(".navigation").toggleClass("fixed-bottom fixed-top"); 
    } 

    console.log($(".navigation").attr('class')) 
}); 

Для переключения между двумя классами, вы можете использовать $.toggle('class1 class2'), как уже упоминалось @ Джон.

+0

Это кажется хорошим, но мне не нужна функция 'click', мне нужно просто добавить, что класс' fixed-bottom', только если этот ' a' имеет этот специфический атрибут и активен, если не делать обратное – agis

+0

@Alecs, пожалуйста, просмотрите мое обновление - оно должно быть таким же нужным – jhohlfeld

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