JQuery: временно изменить стиль, а затем сбросить до исходного класса - PullRequest
56 голосов
/ 27 июня 2009

Скажем, у меня есть класс с именем testThing:

.testThing
{
   background-color:#000000;
   float:left;
   height:50px;
   width:50px;
}

И я хочу иметь возможность проверить изменение цвета фона на любой элемент управления этого класса по нажатию кнопки:

function setColor(someColor) 
{
   jQuery('.testThing').css('background-color', someColor);
}

Но я хочу, чтобы пользователь мог восстановить исходный цвет (еще одно нажатие кнопки) в зависимости от того, что имеет класс:

function resetClass()
{
   jQuery('#currentColor').removeClass('testThing');
   jQuery('#currentColor').addClass('testThing');
}

Похоже, что это будет работать (Albiet не лучший способ сделать это), но цвет фона элемента управления не сбрасывается до исходного значения, содержащегося в этом классе.

Теперь либо мне нужно выяснить, почему удаление, которое нужно добавить, не сбрасывает его, ИЛИ просто лучший способ сделать это ... видя, как глупо удалять и читать класс ...

Ответы [ 4 ]

110 голосов
/ 07 мая 2010

Я знаю, что это старый, но вы можете просто установить значение в пустую строку, чтобы удалить свой собственный стиль, например так:

// set
$(this).css('background-color', '#000000');

// reset
$(this).css('background-color', '');
78 голосов
/ 27 июня 2009

Jquery добавляет CSS в атрибут style, который имеет более высокий приоритет по сравнению с тем, что находится в вашем файле CSS. Вы не изменяете свой CSS-документ с помощью этой функции, поэтому добавление, удаление и добавление класса не имеют никакого эффекта, поскольку он вообще не был изменен!

Вы должны использовать ту же функцию, но на этот раз установить цвет фона на черный.

function reset(this)
{
  $(this).css('background-color', '#000000');
}

Или просто удалите атрибут стиля

function reset(this)
{
  $(this).removeAttr('style');
}
4 голосов
/ 11 октября 2012

А как насчет toggleClass("testThing")? Я использую его, когда нужно изменить несколько свойств.

http://api.jquery.com/toggleClass/

2 голосов
/ 28 июня 2009

Лучше просто добавить другой класс, который переопределяет стиль, который вы хотите изменить, а затем удалить его. Это бьет жесткую информацию о стиле кодирования внутри JS. Единственная проблема заключается в том, что вы должны убедиться, что добавленный класс имеет более высокий порядок, так что элемент берет стиль из него, а не из существующего класса, но это несложно обеспечить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...