Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 22.04.2019, 13:18
Аспирант
Отправить личное сообщение для rodiony4 Посмотреть профиль Найти все сообщения от rodiony4
 
Регистрация: 26.10.2015
Сообщений: 97

Удалить псевдокласс
Здравствуйте
Как удалить псевдоклассы hover и active используя jQuery
Так не получается:
$("#submit_bt").removeClass('buttonRED:hover buttonRED:active');

.buttonRED {
background-color: #B61E29;
border: 1px solid #000;
}
.buttonRED:hover {
  background-color: #ee5f5b;
}
 
.buttonRED:active {
  background: #ff6;
}
Ответить с цитированием
  #2 (permalink)  
Старый 22.04.2019, 14:11
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

rodiony4,
рыть в сторону https://developer.mozilla.org/en-US/...eet/deleteRule
Ответить с цитированием
  #3 (permalink)  
Старый 22.04.2019, 14:26
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

<style>
.buttonRED {
background-color: #B61E29;
border: 1px solid #000;
width:100px;
}
.buttonRED:hover {
  background-color: #ee5f5b;
}
 
.buttonRED:active {
  background: #ff6;
}
</style>
<div class='buttonRED'>Красная кнопка</div>
<button id = 'clear'>Удалить стили</button>
<script>
clear.onclick = function () {
   var style = document.querySelector('style');
         styleArr = style.textContent.split('}');
   for(var i = 0; i<styleArr.length;i++) {
       if(styleArr[i].indexOf('buttonRED:hover') > 0 || styleArr[i].indexOf('buttonRED:active') > 0) { 
           styleArr.splice(i,1);
           i--;
      }
   }
   style.textContent = styleArr.join('}');
}
</script>
Ответить с цитированием
  #4 (permalink)  
Старый 22.04.2019, 15:24
Аспирант
Отправить личное сообщение для rodiony4 Посмотреть профиль Найти все сообщения от rodiony4
 
Регистрация: 26.10.2015
Сообщений: 97

рони, Dilettante_Pro, спасибо!
Ответить с цитированием
  #5 (permalink)  
Старый 22.04.2019, 15:40
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,714

Dilettante_Pro, ваш скрипт работает правильно только для этого конкретного случая... попробуйте
@media all {
  .buttonRED:hover, .test {
    background-color: #ee5f5b;
  }

  .buttonRED {
    background-color: #B61E29;
    border: 1px solid #000;
    width:100px;
  }
  
  .buttonRED:active {
    background: #ff6;
  }
}


UPD
<style>
.buttonRED {
	background-color: #B61E29;
	border: 1px solid #000;
	width:100px;
}
.buttonRED:hover {
	background-color: #ee5f5b;
}
 
.buttonRED:active {
	background: #ff6;
}

@media all {
	.buttonRED:hover, .test {
		background-color: #ee5f5b;
	}

	.buttonRED {
		background-color: #B61E29;
		border: 1px solid #000;
		width:100px;
	}

	.buttonRED:active {
		background: #ff6;
	}
}

</style>
<div class="buttonRED">Красная кнопка</div>
<button id="clear">Удалить стили</button>
<script>

clear.onclick = function () {
	for(const styleSheet of document.styleSheets) {
		process(styleSheet.cssRules)
	}

	function process(cssRules) {
		for(const rule of cssRules) {
			if(rule instanceof CSSStyleRule) {
				rule.selectorText = rule.selectorText.replace(/\.buttonRED:(hover|active)/g, "#a:not(#b)");
			}

			if(rule instanceof CSSMediaRule) {
				process(rule.cssRules)
			}
		}
	}
}

</script>


Замена на a:not(b) является способом не поломать составной селектор!
Замена на #a:not(#b) является способом не поломать составной и сложный селекторы!

Последний раз редактировалось Malleys, 22.04.2019 в 16:31.
Ответить с цитированием
  #6 (permalink)  
Старый 22.04.2019, 16:14
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

Malleys,
Вырубание топором
<style>
@media all {
  .buttonRED:hover, .test {
    background-color: #ee5f5b;
  }

  .buttonRED {
    background-color: #B61E29;
    border: 1px solid #000;
    width:100px;
  }
  
  .buttonRED:active {
    background: #ff6;
  }
}
</style>
<div class='test'>Test</div>
<div class='buttonRED'>Красная кнопка</div>
<button id = 'clear'>Удалить стили</button>
<script>
clear.onclick = function () {
   var style = document.querySelector('style');
    style.textContent = style.textContent.replace('buttonRED:hover','empty');
    style.textContent = style.textContent.replace('buttonRED:active','empty');
 
}
</script>
Ответить с цитированием
  #7 (permalink)  
Старый 22.04.2019, 16:33
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,714

Сообщение от Dilettante_Pro
Malleys,
Вырубание топором
Ломает даже простой селектор!

Замена на #a:not(#b) является способом не поломать составной и сложный селекторы! Или ещё что-то ломает?

А как насчёт .top-buttonRED:hover, которое станет .top-empty?

UPD Ваш способ теряет исходный код!
UPD 2 Ваш способ ломает аргументы CSS-функции, вам нужно написать парсер, чтобы найти именно селектор! Или используйте CSSOM API! (пост №5)

Последний раз редактировалось Malleys, 22.04.2019 в 16:45.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Добавить кнопку удалить для ячеек таблицы CryNet Общие вопросы Javascript 7 30.01.2019 21:23
подскажите как удалить div alex2012 jQuery 5 13.10.2016 17:43
Помогите упростить код открывания панелей Anrew Общие вопросы Javascript 18 14.11.2015 22:15
Как удалить коммит github Maxmaxmaximus6 Оффтопик 59 01.01.2014 19:42
Не могу выбрать и удалить клонируемые элементы AlexPrm jQuery 6 30.05.2010 15:58