2011-02-03 3 views
2

화면 높이에 따라 .selected 요소의 높이를 동적으로 설정하고 싶습니다. $('.selected').css('height', height);$('.selected').height(height);이 작동하지만 다른 요소가 .selected이되면이 규칙의 영향을받지 않습니다.jQuery (또는 JS)로 CSS를 작성하여 현재 및 미래의 일치 항목에 적용하려면 어떻게해야합니까?

var s = $('<style>.selected{height:'+height+'px}</style>').appendTo(document.head); 
... 
// change the height later 
s.remove(); 
s = $('<style>.selected{height:'+new_height+'px}</style>').appendTo(document.head); 

이 작업을 수행 할 수있는 더 나은 방법이 있나요 :

는 다음과 같이 내가 정말로 원하는 무엇입니까?

+2

아니, 그게 최선의 방법이야. 가능한 경우 기존 규칙을 덮어 쓰기 위해 새로운 태그를 추가하는 대신 기존의'style' 태그를 수정하는 것이 더 낫습니다. – lonesomeday

+0

's.text ('selected {height :'+ new_height + 'px}')는 어떨까요? – Jake

답변

1

document.styleSheets[0].insertRule(".selected{height:"+new_height+"px}", 0); 또는 그 유사 물을 사용할 수 있습니다. You can read more about manipulating stylesheets with insertRule here

일반적으로 당신이하고있는 일은 훌륭합니다. 내가 너라면 너의 스타일 요소에 대한 언급을 유지하고 다음과 같이 새 것으로 바꿀거야 :

var s = $('<style>.selected{height:'+height+'px}</style>').appendTo(head); 
... 
// change the height later 
s.replaceWith('<style>.selected{height:'+new_height+'px}</style>'); 
+0

@drachenstern : 내가 내 대답을 썼을 때 제거 문이 문제가 아니 었습니다.) 그렇지 않으면 어떤 종류의 마법에 의해 중간에 한 줄이없는 코드 블록을 복사/붙여 넣기 할 수있었습니다 ... –

+0

@ drachenstern : 나는 이상하다. 마법 복사/붙여 넣기 이외의 방법으로는 설명 할 수 없다. –

관련 문제