Jak mogę usunąć wszystkie wbudowane style za pomocą javascript i pozostawić tylko style określone w arkuszu stylów css?


94

Jeśli mam następujące informacje w moim html:

<div style="height:300px; width:300px; background-color:#ffffff;"></div>

A to w moim arkuszu stylów css:

div {
    width:100px;
    height:100px;
    background-color:#000000;
}

Czy za pomocą javascript / jquery można w jakiś sposób usunąć wszystkie wbudowane style i pozostawić tylko style określone w arkuszu stylów css?

Odpowiedzi:


166

$('div').attr('style', '');

lub

$('div').removeAttr('style');(Z odpowiedzi Andresa )

Aby to trochę zmniejszyć, spróbuj tego:

$('div[style]').removeAttr('style');

Powinno to trochę przyspieszyć, ponieważ sprawdza, czy elementy div mają atrybut style.

Tak czy inaczej, przetwarzanie może trochę potrwać, jeśli masz dużą liczbę elementów div, więc możesz rozważyć inne metody niż javascript.


Jeśli będzie musiał usunąć atrybut style, będzie musiał go również szukać, więc ostatnie rozwiązanie wydaje się tylko uczynić kod bardziej brudnym imho. Najlepszym rozwiązaniem byłoby oczywiście wybranie tylko tych elementów, które mają być usunięte, być może za pomocą identyfikatora.
Jose Faeti

Będzie to dotyczyło tylko elementów DIV. A jeśli chcesz skupić się na wszystkim?
latarnia uliczna

1
Poza tym wywołanie .css()z pustym ciągiem znaków jako drugą wartością usunie tylko podaną wartość ze stylów wbudowanych, np. $ ('Div'). Css ('display', ''); usunie tylko wbudowaną właściwość wyświetlania (jeśli jest ustawiona).
Tom Davies,

2
@streetlight Służy $('*').removeAttr('style')do kierowania na wszystko.
Makaze,

Nie, właściwie drugi powinien być trochę szybszy, ponieważ jeśli JQuery ma jakiś sens, to będzie używał standardowego removeattribute. Zapominasz też o ogromnym, nieefektywnym narzucie pętli, mimo większej liczby elementów DOM, co sprawia, że ​​druga metoda jest nawet szybsza niż pierwsza.

35

Zwykły JavaScript:

Nie potrzebujesz jQuery do zrobienia czegoś tak trywialnego. Po prostu użyj .removeAttribute()metody.

Zakładając, że celujesz w pojedynczy element, możesz łatwo użyć następującego: (przykład)

document.querySelector('#target').removeAttribute('style');

Jeśli kierujesz reklamy na wiele elementów, po prostu przejrzyj wybraną kolekcję elementów: (przykład)

var target = document.querySelectorAll('div');
Array.prototype.forEach.call(target, function(element){
    element.removeAttribute('style');
});

Array.prototype.forEach()- IE9 i nowsze / .querySelectorAll()- IE 8 (częściowe) IE9 i nowsze.


1
Alternatywą do Array.prototype.forEach.calljest dość dobrze obsługiwany operator ikona, która zapisuje wiersz: [... document.querySelectorAll('div')].forEach(div => div.removeAttribute('style')).

22
$('div').removeAttr('style');

Czy jest to bardziej wydajne niż wykonywanie attr („style”, „”)?
Matt,

z $ ('div'). attr ('style', ''); <div style = ""> </div> z $ ('div'). removeAttr ('style'); <div> </div> jest bardziej
przejrzysty

prawdopodobnie dlatego, że nie ustawia go na wartość null, ale tak czy inaczej, otrzymasz długi czas przetwarzania, ponieważ musi przejść przez każdy element div w treści.
Tyler Carter

tak, to jasne, należy to zmienić na identyfikator $ ("# id") lub klasę $ (".classDivs)
andres descalzo

3

Używałem tej $('div').attr('style', '');techniki i nie działała w IE8.

Wyprowadziłem atrybut style przy użyciu alert()i nie usuwał on stylów wbudowanych.

.removeAttr ostatecznie załatwił sprawę w IE8.


3

Jeśli chcesz po prostu opróżnić styleelement, to:
element.style.cssText = null;
To powinno wystarczyć. Mam nadzieję, że to pomoże!


Podobna logika wydaje się mieć zastosowanie, gdy próbuję „opróżnić” tylko jedną właściwość stylu dla elementu: element.style.display = null;- tego właśnie potrzebowałem: D
Bilal Akil

2

Można to zrobić w dwóch krokach:

1: wybierz element, który chcesz zmienić, za pomocą zmiennej, identyfikatora, klasy itp.

var element = document.getElementsByTagName('h2')[0];

  1. usuń atrybut stylu

element.removeAttribute('style');


-2

Możesz także spróbować wymienić css w arkuszu stylów jako! Ważne


3
chociaż to by zadziałało, to okropna praktyka zastępowanie stylów wbudowanych za pomocą!
Important
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.