2011-08-31 6 views
0

jQuery를 사용하여 요소의 스타일을 재설정하는 방법을 아는 사람이 있습니까? 내가 jQuery를jQuery로 요소 스타일 재설정

$("#container").removeClass("container-red").addClass("container-white"); 

innerbox 스타일이 변경되지 않습니다를 사용하여 클래스를 변경할 때 다음

<div id="container" class="container-red"> 
    <div id="innerbox">Some text here</div> 
</div> 

:

.container-red { background-color: #f00; } 
.container-red #innerbox { background-color: #fff; } 
.container-white { background-color: #fff; } 
.container-white #innerbox { background-color: #f00; } 
#innerbox { margin: 20px; } 

그리고이 마크 업 : 예를 들어, 나는 이런 스타일이 그것은 이미 흰색 컨테이너와 빨간색 내부 상자가 아니라 흰색 컨테이너와 흰색 안쪽 상자를 남겨주는 이미 스타일이 지정 되었기 때문에 일치합니다. 따라서, 나는

$("#container").children().resetStyles(); 

같은 것을 할 수 있기를 원하고 컨테이너 아이들의 각각 편집

올바른 스타일로 업데이트가 : 죄송합니다, 당신은 모든 권리, 코드가 잘 작동 않는 것, 내 문제는 단순히 다른 CSS가 내 수업 스타일을 재정의했다는 것입니다.

+0

이것이 무엇을하기로되어 있지 않은가요? http://jsfiddle.net/cYARr/ 코드가 제대로 작동하는 것 같습니다. –

답변

0
당신은 내가 그것을 테스트하기 때문에 내가 생각하는 뭔가를 잘못하고있는

나에게 그것은 작동 :

http://jsfiddle.net/VH4du/

나는 크롬, 파이어 폭스와 IE9에 그것을 테스트.

0

나를 위해 바뀌 었습니다. 예 : here을 참조하십시오.

0

문제는 jQuery 코드가 아니며 요소가 이미 스타일링 된 것입니다. 알맞고 최신 브라우저는 자동으로 내부 요소에 스타일을 다시 적용합니다.

문제는 ID로 innerbox를 사용하고 있다는 것입니다. id가있는 요소가 하나만 있어야하기 때문에 일부 브라우저의 CSS 엔진이 이상한 우선 순위를 부여하고 일부 CSS 규칙을 무시할 수 있습니다.

대신 innerbox를 CLASS로 변환 해보십시오. 예상 한대로 작동해야합니다.

BTW, 어떤 브라우저가 문제를 드러내고 있습니까?

+0

게시 한 HTML 마크 업에는 중복 된 ID가 없습니다. –

+0

아니요, ID가 중복되어 있다고 말하지 않았습니다. 단순히 ID의 단일성을 고려할 때 일부 CSS 엔진은 ID가 관련 될 때 CSS 규칙의 일부를 최적화하고 무시하는 경향이 있습니다. 클래스를 사용하는 것은 CSS 엔진보다 훨씬 친숙합니다. –

+0

아, 내 잘못, 나는 그런 식으로 이해하지 못했다. (아마 당신이 괄호 안에 쓴 것 때문일 것이다.) –