У меня есть Div элемент, с помощью CSS -> класс 1, как следующие коды:Как изящно переопределить старый css с помощью нового css jQuery?
<style type="text/css">
.class1 {width: 100px !important;padding-top:10px;margin-bottom: 22px;}
</style>
<div class="class1"></div>
Моя цель, чтобы изменить ширину этого Div элемента в 300px. Мое оригинальное решение довольно прямо вперед с помощью JQuery:
$('div').find(".class1").each(function() {
this.style.setProperty( "width", "300px", "important");
});
Однако наш технический руководитель думал, что это так Hacky, и попросил меня сделать это как часть таблицы стилей вместо этого.
Он предположил, что, возможно, я могу прикрепить класс маркера к этому элементу div, чтобы вызвать другое поведение.
Итак, мой план, чтобы добавить новый класс CSS -> Class2, а затем попытаться добавить/применить этот новый класс сНа элемента, как следующее:
<style type="text/css">
.class2 {width: 300px !important;}
</style>
$('div').find(".class1").each(function() {
$(this).addClass("class2");
});
Однако class1 все еще выше приоритет, чем класс2, поэтому ширина по-прежнему равна 100px.
Это означает, что мне нужно удалить Class1, прежде чем применяется класс 2, как
$('div').find(".class1").each(function() {
$(this).removeClass("class1").addClass("class2");
});
Но, если class1 имеет множество настроек/свойств, это означает, что мне нужно скопировать их в class2 для сохранения результата все тот же , кроме ширины.
Есть ли элегантный способ «только» переопределить настройку ширины класса 1, если класс2 содержит только новую настройку ширины?
удалите! Важно в обоих классах и поместите класс2 в класс1 в файл, определите их, и он должен работать. –
@ thinh.lam, есть ли способ, по которому мы не редактируем определение класса1, поскольку мы все еще нуждаемся в нем для других сценариев/функций. – user3174976