JQuery: временно изменить стиль, а затем сбросить до исходного класса

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

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

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

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

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

<code>function resetClass()
{
   jQuery('#currentColor').removeClass('testThing');
   jQuery('#currentColor').addClass('testThing');
}
</code>

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

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

 Gab Royer27 июн. 2009 г., 21:29
Вам не нужно использовать jQuery (...), вы можете просто использовать $ (..)
 Programmin Tool28 июн. 2009 г., 22:14
Вы делаете это, если используется несколько библиотек, таких как Microsoft ajax или прототип. Я просто делаю это на случай, хотя, скорее всего, я буду использовать только jquery.

Ответы на вопрос(4)

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

 27 июн. 2009 г., 22:27
Вы всегда можете использовать! Важное, чтобы убедиться, что атрибуты вашего нового класса взяты.
 01 апр. 2011 г., 11:46
AND -! Важный несовместим с некоторыми современными браузерами :(
 28 июн. 2009 г., 21:42
Я должен согласиться, что это как бы нарушает правила.
 27 июн. 2009 г., 23:03
нет, я не люблю использовать это, побеждает цель CSS IMO
Решение Вопроса

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

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

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

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

function reset(this)
{
  $(this).removeAttr('style');
}
 27 июн. 2009 г., 21:55
Ну, это очищает каждую модификацию, сделанную с помощью Jquery, а это именно то, что он хотел здесь. Он все еще мог использовать первый, хотя.
 27 июн. 2009 г., 21:12
Ударь меня к этому. удаление.
 15 дек. 2016 г., 07:29
Но это удаляет любые стили на элементе, фактически делая его белым! ОП спросил, как восстановить первоначальный стиль. Почему бы временно не сохранить оригинальный стиль в поддельном идентификаторе элемента и не восстановить его позже? Что если элемент является альтернативной строкой в виде сетки, которая имеет разные цвета для каждой второй строки?
 10 авг. 2011 г., 04:40
помните, что removeAttribute () больше не работает для jquery, вместо этого используйте removeAttr ()!
 27 июн. 2009 г., 21:43
это работает, только если у вас нет других настроек стиля, которые вы хотите сохранить

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

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

// reset
$(this).css('background-color', '');
 23 мар. 2014 г., 12:44
Второй вариант кажется мне наиболее смысловым.
 20 авг. 2015 г., 10:59
вау, я не могу поверить, что это сработало! лол
 26 окт. 2010 г., 14:55
Спасибо - только то, что мне было нужно :)
 07 сент. 2012 г., 21:24
Спасибо, Jscheel! Это работает очень хорошо и не разрушает другие (ранее существующие) стили.
 06 мар. 2013 г., 12:15
Мне нравится это решение!

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

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

 27 июн. 2017 г., 19:37
Я не уверен, что понимаю ваш комментарий. Я сказал то же самое, что и вы: это полезно, когда вы хотите изменить более одного свойства CSS одновременно.
 26 июн. 2017 г., 18:30
Я не понимаю, почему это окончательный ответ. Я нашел этот ответ полезным, когда у нас есть сложный CSS, который можно применять только для определенных условий, которые необходимо сбросить сразу после.
 28 июн. 2017 г., 01:08
Извините, я прочитал свой комментарий еще раз и нашел ошибку. Это 's', почему это не окончательный ответ '. Не "почему это ...".

Ваш ответ на вопрос