2012-02-09 2 views
5

예를 들어 표를 시뮬레이트하기 위해 많은 요소의 너비를 변경한다고 가정 해 보겠습니다. 나는 당신이 할 수있는 실현 :jQuery를 사용하여 CSS 규칙 정의 변경

$(".class").css('width', '421px'); 

이 각 요소의 인라인 style='width: 421px;' 속성 을 변경합니다. 이제, 내가하고 싶은 것 : 실제 CSS 규칙 정의를 변경할 수 있습니다 :이 될 것 같은 중첩 된 <ul> 및 필요 <li> 아닌 1000 년대가 변경 될 경우 100 년대에 올 때

.class { 
    width: 375px; ==[change to]==> 421px; 
} 

을 것 같습니다 .css() 메소드를 통해 jQuery가 작업을 수행하는 것보다 성능이 더 좋습니다.

것은 내가 this example 발견했습니다 - 이것이 내가 할 노력하고있어입니다 : 나는 모든 최적의 클래스를 가질 수 없기 때문에,

var style = $('<style>.class { width: 421px; }</style>') 
$('html > head').append(style); 

내가 ($el.removeClass().addClass()를) 클래스를 교체하려고하지 않아요 너비 (379px, 387px, 402px ..).

나는 <style> 요소를 만들고 동적으로 너비를 설정할 수 있지만 더 좋은 방법이 있다고 생각합니다.

+2

정말 CSS에 두 개의 클래스를 작성하고 필요한 경우 추가/제거해야한다고 생각합니다. JS에서 스타일 시트를 혼동해서는 안되며, 신속하게 유지할 수 없게됩니다. – kapa

+0

@kapa, 이것은 모든 CSS가 미리 정의되어야하기 때문에 한계가 있습니다. 예를 들어 임의의 n 번째 자식 요소를 강조 표시 할 수 없습니다. '#root> div : nth-child ('+ Nth + ') {background : red; }' –

답변

1

document.styleSheets [0] .addRule FF

크롬 '이 아닌 기능'에 작품
0

무엇 나를위한 작품 헤더에 빈 스타일 블록을 포함하는 것입니다 :

<style id="custom-styles"></style> 

그리고이 같은 뭔가가 조작 :

$('#custom-styles').text('h1 { background: red }') 

나는이 크롬 (물론, 크롬 - 63.0)의 현재 버전에서 작업 표시 테스트 한 파이어 폭스 (57.0.4).