Переключатель классов
.toggleClass() — добавляет или удаляет заданный класс(ы) по принципу переключателя (добавляет, если элемент не содержит класса, и удаляет, если класс есть).
Функция имеет несколько вариантов использования:
.toggleClass( className )
Добавляет или удаляет заданный в className класс(ы). Если классов несколько, то в строке className они должны быть разделены пробелами.
- className — имя класса (или несколько имен, разделенных запятой).
.toggleClass( className, state )
Только добавляет или только удаляет классы в зависимости от параметра state.
- className — имя класса (или несколько имен, разделенных запятой).
- state — параметр имеет тип
boolean.true— в случае добавления класса(ов),false— иначе.
.toggleClass( function [, state ] )
Переключает классы, список которых возвращает заданная пользователем функция.
- function(index, className, state ) — функция, которая возвращает строку с перечислением классов через пробел
- index — позиция элемента в наборе;
- className — имя класса (или несколько имен, разделенных запятой).
- state — параметр имеет тип
boolean.true— в случае добавления класса(ов),false— иначе.
Примеры использования. Первый вариант
<div class="tumble">Some text.</div>
Сначала при работе $( "div.tumble" ).toggleClass( "bounce" ) получим:
<div class="tumble bounce">Some text.</div>
При втором использовании $( "div.tumble" ).toggleClass( "bounce" ) класс bounce будет удален.
При работе $( "div.tumble" ).toggleClass( "bounce spin" ) по аналогии с первым примером получим:
<div class="tumble bounce spin">Some text.</div>
При повторном использовании оба класса будут удалены.
Примеры использования. Второй вариант
Во втором примере передадим аргумент addOrRemove, который в зависимости от условий будет принимать значение true или false:
$( "#foo" ).toggleClass( className, addOrRemove );
это эквивалент:
if ( addOrRemove ) {
$( "#foo" ).addClass( className );
} else {
$( "#foo" ).removeClass( className );
}
Примеры использования. Третий вариант
В третьем примере напишем функцию для определения того, какой класс нужно добавить элементу:
$( "div.foo" ).toggleClass(function() {
if ( $( this ).parent().is( ".bar" ) ) {
return "happy";
} else {
return "sad";
}
});
Если у элемента <div class="foo"> есть класс bar, то добавим ему класс happy в другом случае sad.