Как установить класс для элемента с помощью jQuery? Не хотите добавлять/удалять классы

Мне нужно установить класс для элемента на моей странице. С помощью обычного JavaScript я бы написал что-то вроде:

document.getElementById('foo').className = "my_class";

Это просто устанавливает класс, который именно то, что я хочу. Но я использую jQuery на своей странице и поэтому хотел бы сделать это с помощью "jQuery way", так как кажется странным смешивать старый стиль и стиль jQuery. Но jQuery, по-видимому, позволяет вам использовать addClass() или removeClass(), например:

$('#foo').addClass("my_class");

Проблема заключается в том, что он просто добавляет класс к элементу, он не заменяет существующий класс. Означает ли это, что мне нужно отслеживать старый класс и сначала делать removeClass()? Невозможно ли указать jQuery для замены текущего класса независимо от того, что он есть, и просто заменить его на новый?

Ответы

Ответ 1

Чтобы удалить все классы из элемента:

$('#foo').removeClass();

Указание аргументов removeClass не удаляет все классы. Таким образом, ваше решение будет:

$('#foo').removeClass().addClass('my_class');

Ответ 2

Задайте атрибут class напрямую, используя .attr():

$('#foo').attr('class', 'my_class');

Ответ 3

Вы можете использовать функцию .attr() следующим образом:

$('#foo').attr('class', 'my_class');

Ответ 4

Вы можете использовать это:

$('#foo').attr('class', 'my_class');

Он заменит любой класс "my_class"

Ответ 5

 $('#foo').removeClass().addClass('my_class');

Ответ 6

А, нашел ответ через несколько секунд после того, как я разместил вопрос. Очевидно, мои навыки Google были недостаточными...: - (

Во всяком случае, ответ находится в функции removeClass(). Итак, вы можете сделать:

$('#foo').removeClass().addClass("my_class");

Не может быть проще.

Ответ 7

вы можете попробовать использовать . toggleClass()