Это может быть поздно для обсуждения, но мне нужно было что-то вроде того, о чем здесь говорят, но я не нашел ничего, что действительно сделало бы то, что я хотел, и сделал это легко.Мне нужно было скрыть и показать многочисленные элементы без явного посещения каждого элемента в отдельности, чтобы каким-то образом обновить их, изменив стиль отображения на скрытый.Поэтому я придумал следующее:
<style>
/* The bulk of the css rules should go here or in an external css file */
/* None of these rules will be changed, but may be overridden */
.aclass { display: inline-block; width: 50px; height: 30px; }
</style>
<style id="style">
/* Only the rules to be changed should go in this style */
.bclass { display: inline-block; }
</style>
<script>
//
// This is a helper function that returns the named style as an object.
// This could also be done in other ways.
//
function setStyle() { return document.getElementById( 'style' ); }
</script>
<div id="d1" class="aclass" style="background-color: green;">
Hi
</div>
<!-- The element to be shown and hidden -->
<div id="d2" class="aclass bclass" style="background-color: yellow;">
there
</div>
<div id="d3" class="aclass" style="background-color: lightblue;">
sailor
</div>
<hr />
<!-- These buttons demonstrate hiding and showing the d3 dive element -->
<button onclick="setStyle().innerHTML = '.bclass { display: none; }';">
Hide
</button>
<button onclick="setStyle().innerHTML = '.bclass { display: inline-block; }';">
Show
</button>
Переключив правило bclass во встроенной и именованной таблице стилей, которая идет после любых других соответствующих таблиц стилей, в данном случае с таблицей правил, я мог быобновите правило just display css в одном месте и переопределите правило aclass, которое также имело свое собственное правило отображения.
Прелесть этого метода в том, что он настолько прост, что фактически одна строка выполняетдля реальной работы не требуются никакие библиотеки, такие как JQuery или плагины, а реальная работа по обновлению всех мест, к которым применяется изменение, выполняется основной функциональностью браузера css, а не JavaScript.Кроме того, он работает в IE 9 и более поздних версиях, Chrome, Safari, Opera и во всех других браузерах, которые MicroSoft Edge может эмулировать, для настольных компьютеров и планшетов / телефонов.