Jestem nowy w JQuery. W mojej aplikacji mam:
$("#displayPanel div").live("click", function(){
$(this).css({'background-color' : 'pink', 'font-weight' : 'bolder'});
});
Kiedy klikam element DIV, kolor tego elementu DIV ulega zmianie. W ramach tej funkcji Click mam kilka funkcji do wykonania. Po tym wszystkim chcę usunąć zastosowany CSS z Div. Jak mogłem to zrobić w JQuery?
Odpowiedzi:
Umieść swoje właściwości CSS w klasie, a następnie zrób coś takiego:
Następnie, gdzie są twoje `` inne funkcje '', zrób coś takiego:
źródło
<div style="xxx"/>
to nadal CSS ... to nie jest dobry sposób, aby to zrobić, ale działa.addClass
lubremoveClass
lubremoveAttr('style')
jak w odpowiedzi @ ToRrEs.Możesz usunąć określony plik CSS znajdujący się w elemencie w następujący sposób:
Chociaż zgadzam się z karimem, prawdopodobnie powinieneś używać klas CSS.
źródło
Możesz użyć metody removeAttr, jeśli chcesz usunąć cały styl wbudowany dodany ręcznie za pomocą javascript. Lepiej jest używać klas CSS, ale nigdy nie wiadomo.
źródło
.css('style-name', 'style-value')
funkcja jQuery dodaje style wbudowane do elementu - i jest niezbędna do aktualizowania stylów w locie. Skrypt typu „przeciągnij / upuść” może zmienićtop
ileft
style elementu pozycjonowanego absolutnie - sytuacja, w której użycie klas jest niepraktyczne.Możesz usunąć właściwości wbudowane w ten sposób:
Na przykład:
Jest to zasadniczo wspomniane powyżej i zdecydowanie pomaga.
BTW, jest to przydatne w sytuacjach, gdy trzeba wyczyścić stan po animacji. Jasne, mógłbym napisać pół tuzina klas, aby sobie z tym poradzić, lub użyć mojej klasy bazowej i #id zrobić trochę matematyki i wyczyścić styl wbudowany, którego dotyczy animacja.
źródło
LUB
źródło
Uwaga: w zależności od właściwości możesz ustawić ją na auto.
źródło
Ustaw wartość domyślną, na przykład:
$ (this) .css ("wysokość", "auto");
lub w przypadku innych funkcji CSS
$ (this) .css ("wysokość", "dziedziczenie");
źródło
Właściwie to najlepszy sposób, jaki znalazłem, aby to zrobić, gdy muszę robić złożone stylizacje oparte na jquery, na przykład, jeśli masz modal, który musisz wyświetlić, ale musi obliczyć przesunięcia stron, aby uzyskać prawidłowe parametry, które będą musiały przejść funkcja a jQuery ("x"). css ({}).
Oto ustawienie stylów, wynik zmiennych obliczonych na podstawie różnych czynników.
Aby usunąć te style. zamiast ustawiać coś podobnego
Byłby prosty sposób
Kiedy jquery manipuluje elementami w domenie, style są zapisywane do elementu w atrybucie „style”, tak jakbyś pisał style w tekście. Wszystko, co musisz zrobić, to wyczyścić ten atrybut, a przedmiot powinien zresetować się do swoich oryginalnych stylów
Mam nadzieję że to pomoże
źródło
mam ten sam problem, po prostu usuń wartość
źródło
Jeśli nie chcesz używać klas (co naprawdę powinieneś), jedynym sposobem na osiągnięcie tego, co chcesz, jest zapisanie najpierw zmienianych stylów:
źródło
Użyłem drugiego rozwiązania user147767
Jednak jest tu literówka. Powinno być
nie <= 0
Zmieniłem również ten warunek dla:
ponieważ czasami dodajemy właściwość css przez jQuery i dodajemy ją w inny sposób dla różnych przeglądarek (np. właściwość border zostanie dodana jako „border” dla przeglądarki Firefox i „border-top”, „border-bottom” itp. dla IE ).
źródło
Przed dodaniem klasy należy sprawdzić, czy ma ona już klasę z metodą .hasClass ()
Na Twoje konkretne pytanie. Powinieneś umieścić swoje rzeczy w Cascading Stylesheet. Najlepszą praktyką jest oddzielenie projektu od funkcjonalności.
więc proponowane rozwiązanie dodawania i usuwania nazw klas jest najlepszą praktyką.
jednak kiedy manipulujesz elementami, nie masz kontroli nad sposobem ich renderowania. removeAttr ('style') to NAJLEPSZY sposób na usunięcie wszystkich wbudowanych stylów.
źródło
I zmodyfikowane user147767 męska rozwiązanie trochę, aby go można użyć
strings
,arrays
aobjects
jako dane wejściowe:http://jsfiddle.net/ARTsinn/88mJF/
źródło