Czy istnieje sposób w jQuery, aby uzyskać cały CSS z istniejącego elementu i zastosować go do innego bez wyświetlania ich wszystkich?
Wiem, że zadziałałoby, gdyby były atrybutem stylu attr()
, ale wszystkie moje style znajdują się w zewnętrznym arkuszu stylów.
javascript
jquery
css
alex
źródło
źródło
Dwa lata spóźnienia, ale mam rozwiązanie, którego szukasz. Nie zamierzam pobierać kredytu od oryginalnego autora , oto wtyczka, którą znalazłem, działa wyjątkowo dobrze dla tego, czego potrzebujesz, ale dostaje wszystkie możliwe style we wszystkich przeglądarkach, nawet IE.
Ostrzeżenie: ten kod generuje dużo danych wyjściowych i należy go używać oszczędnie. Kopiuje nie tylko wszystkie standardowe właściwości CSS, ale także wszystkie właściwości CSS dostawcy dla tej przeglądarki.
jquery.getStyleObject.js:
Podstawowe użycie jest dość proste, ale napisał również dla tego funkcję:
Mam nadzieję, że to pomaga.
źródło
this.css()
? Nie ma dokumentacji dla tej metody, która nie przyjmuje żadnych argumentów, a jeśli zostanie osiągnięta ta instrukcja, zgłasza wyjątek. Myślę, że bardziej odpowiednie byłobyreturn returns;
nawet, gdyby był to pusty obiekt.$("#div2").copyCSS($("#div1"));
i aby uzyskać styl dowolnego elementu, którego możesz użyć:JSON.stringify($('#element').getStyleObject());
Dlaczego nie użyć
.style
elementu DOM ? Jest to obiekt zawierający elementy takie jakwidth
ibackgroundColor
.źródło
Próbowałem wielu różnych rozwiązań. To był jedyny, który działał dla mnie, ponieważ był w stanie wychwycić style stosowane na poziomie klasy i stylu bezpośrednio przypisane do elementu. Tak więc zestaw czcionek na poziomie pliku css i jeden jako atrybut stylu; zwrócił prawidłową czcionkę.
To jest proste! (Niestety nie mogę znaleźć miejsca, w którym go pierwotnie znalazłem)
Alternatywnie możesz wyświetlić cały styl, przewijając cykl
źródło
Rozwiązanie @ marknadal nie pobierało dla mnie dzielonych właściwości (np.
max-width
), ale zmiana pierwszejfor
pętlicss2json()
sprawiła, że działała i podejrzewam, że wykonuje mniej iteracji:Pętle
length
zamiast zamiastin,
pobiera za pośrednictwemgetPropertyValue()
zamiasttoLowerCase().
źródło