Załóżmy, że chcesz zmienić szerokość wielu elementów, na przykład, aby zasymulować tabelę. Zdaję sobie sprawę, można to zrobić:Alter Definicja reguły CSS za pomocą jQuery
$(".class").css('width', '421px');
Zmienia to inline style='width: 421px;'
atrybut dla każdego elementu. Teraz, co chciałbym zrobić: to zmienić rzeczywistą definicję reguły CSS:
.class {
width: 375px; ==[change to]==> 421px;
}
Jeśli chodzi o 100 jeśli nie 1000 na zagnieżdżonego <ul>
i <li>
które muszą zostać zmienione, wydaje się, że byłoby to lepsze dla wydajności niż próba umożliwienia jQuery wykonania pracy za pomocą metody .css()
.
Znalazłem this example - To, co próbuję zrobić:
var style = $('<style>.class { width: 421px; }</style>')
$('html > head').append(style);
ja nie staram się zamieniać klas ($el.removeClass().addClass()
), bo nie mogę mieć klasę dla każdego optymalne szerokość (379px, 387px, 402px ..).
Mogę utworzyć element <style>
i dynamicznie ustawić szerokość, jednak myślę, że jest lepszy sposób.
Naprawdę myślę, że powinieneś napisać dwie klasy w swoim CSS, i dodać/usunąć odpowiednie w razie potrzeby. Nie powinieneś mieszać ze swoim arkuszem stylów w JS, szybko stanie się niemożliwym do utrzymania. – kapa
@kapa, to ma swoje ograniczenia, ponieważ wszystkie CSS muszą być zdefiniowane z góry. Nie można na przykład podświetlić dowolnych elementów nth-child: '#root> div: nth-child ('+ Nth +') {background: red; } ' –