자바 스크립트로 모든 인라인 스타일을 지우고 CSS 스타일 시트에 지정된 스타일 만 남기려면 어떻게해야합니까?


94

내 HTML에 다음이있는 경우 :

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

그리고 이것은 내 CSS 스타일 시트에 있습니다.

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

javascript / jquery를 사용하여 모든 인라인 스타일을 제거하고 CSS 스타일 시트에 지정된 스타일 만 남겨 두는 방법이 있습니까?

답변:


166

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

또는

$('div').removeAttr('style');( Andres의 답변에서 )

이것을 조금 더 작게 만들려면 다음을 시도하십시오.

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

div에 스타일 속성이 있는지 확인하므로 속도가 약간 빨라집니다.

어느 쪽이든 div가 많은 경우 처리하는 데 약간의 시간이 걸릴 수 있으므로 자바 스크립트 이외의 다른 방법을 고려할 수 있습니다.


스타일 속성을 제거해야하는 경우에도 찾아야하므로 마지막 해결책은 코드를 더럽게 만드는 것처럼 보입니다. 물론 가장 좋은 방법은 ID를 통해 스타일을 제거하는 데 필요한 요소 만 선택하는 것입니다.
Jose Faeti 2011-08-03

div 만 타겟팅합니다. 모든 것을 목표로하고 싶다면?
가로등

1
이와 관련 .css()하여 두 번째 값으로 빈 문자열을 호출 하면 인라인 스타일에서 명명 된 값만 제거됩니다. 예 : $ ( 'div'). css ( 'display', ''); 인라인 표시 속성 만 제거합니다 (설정된 경우).
Tom Davies

2
@streetlight $('*').removeAttr('style')모든 것을 타겟팅하는 데 사용 합니다.
Makaze

아니요, 실제로 두 번째는 JQuery가 어떤 의미가 있다면 표준 removeattribute를 사용하기 때문에 조금 더 빠릅니다. 또한 두 번째 방법을 첫 번째 방법보다 훨씬 빠르게 만드는 더 많은 DOM 요소를 통해 반복되는 엄청난 비효율적 인 오버 헤드를 잊었습니다.

32

일반 JavaScript :

이와 같은 사소한 작업을 수행하기 위해 jQuery가 필요하지 않습니다. .removeAttribute()방법을 사용하십시오 .

단일 요소를 대상으로한다고 가정하면 다음을 쉽게 사용할 수 있습니다. (예)

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

여러 요소를 대상으로하는 경우 선택한 요소 컬렉션을 반복합니다 (예).

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

Array.prototype.forEach()-IE9 이상 /-IE .querySelectorAll()8 (일부) IE9 이상.


1
에 대한 대안 Array.prototype.forEach.call은 상당히 잘 지원되는 splat 연산자로 다음 줄을 절약합니다 [... document.querySelectorAll('div')].forEach(div => div.removeAttribute('style'))..

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

이것은 attr ( 'style', '')을하는 것보다 더 효율적입니까?
Matt

$ ( 'div'). attr ( 'style', ''); <div style = ""> </ div> with $ ( 'div'). removeAttr ( 'style'); <div> </ div>가 더 깨끗합니다
andres descalzo

아마도 null 값으로 설정하지 않았기 때문일 것입니다. 그러나 어느 쪽이든 본문의 모든 div를 통과해야하기 때문에 처리 시간이 길 것입니다.
Tyler Carter

예, 분명합니다. ID $ ( "# id") 또는 클래스 $ ( ". classDivs)로 변경해야합니다.
andres descalzo

3

$('div').attr('style', '');기술 을 사용하고 있었는데 IE8에서 작동하지 않았습니다.

사용하여 스타일 속성을 출력 alert()했지만 인라인 스타일을 제거하지 않았습니다.

.removeAttr 결국 IE8에서 트릭을 수행했습니다.


3

style요소를 비워야하는 경우 다음
element.style.cssText = null;
을 수행하십시오. 도움이 되었기를 바랍니다.


요소에 대한 단일 스타일 속성 만 "비 element.style.display = null;우려 는"경우 비슷한 논리가 적용되는 것 같습니다 .-그게 내가 필요했던 것입니다. : D
Bilal Akil

1

이는 다음 두 단계로 수행 할 수 있습니다.

1 : 태그 이름, ID, 클래스 등으로 변경하려는 요소를 선택합니다.

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

  1. 스타일 속성 제거

element.removeAttribute('style');


-2

스타일 시트에 CSS를! important로 나열 할 수도 있습니다.


3
이 작업을 할 때, 그냥 무시 인라인 스타일에 끔찍한 연습은 순서대로 중요한 그들을 제거!
joshvermaire
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.