Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Alter CSS rule definition using jQuery

Let's say you want to change the width of many elements, to simulate a table, for example. I realize you could do this:

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

This alters the inline style='width: 421px;' attribute for each element. Now, what I'd LIKE to do: is change the actual CSS rule definition:

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

When it comes to 100's if not 1000's of nested <ul> and <li> that need to be changed, it seems like this would be better for performance than trying to let jQuery do the work through the .css() method.

I've found this example - this IS what I'm trying to do:

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

I'm NOT trying to swap classes ($el.removeClass().addClass()), because I can't have a class for EVERY optimal width (379px, 387px, 402px..).

I could create a <style> element and dynamically set the width, however I'm thinking there's a better way.

like image 458
Michael Lewis Avatar asked Nov 14 '22 10:11

Michael Lewis


1 Answers

document.styleSheets[0].addRule works in Chrome, 'not a function' in FF

like image 129
user2360953 Avatar answered Nov 16 '22 03:11

user2360953