Ответ 1
Конкретные методы управления таблицами стилей,
DOM: insertRule()
Microsoft: addRule()
Я только что сделал метод для jQuery (возможно, кто-то еще сделал, я не знаю)
(
function( $ )
{
$.style={
insertRule:function(selector,rules,contxt)
{
var context=contxt||document,stylesheet;
if(typeof context.styleSheets=='object')
{
if(context.styleSheets.length)
{
stylesheet=context.styleSheets[context.styleSheets.length-1];
}
if(context.styleSheets.length)
{
if(context.createStyleSheet)
{
stylesheet=context.createStyleSheet();
}
else
{
context.getElementsByTagName('head')[0].appendChild(context.createElement('style'));
stylesheet=context.styleSheets[context.styleSheets.length-1];
}
}
if(stylesheet.addRule)
{
for(var i=0;i<selector.length;++i)
{
stylesheet.addRule(selector[i],rules);
}
}
else
{
stylesheet.insertRule(selector.join(',') + '{' + rules + '}', stylesheet.cssRules.length);
}
}
}
};
}
)( jQuery );
Пример использования:
$.style.insertRule(['p','h1'], 'color:red;')
$.style.insertRule(['p'], 'text-decoration:line-through;')
$.style.insertRule(['div p'], 'text-decoration:none;color:blue')
второй аргумент должен быть ясным, правила. В качестве необязательного третьего аргумента можно предоставить контекстный документ.
Первый аргумент - это селекторы как элементы массива.
Обратите внимание, что вам не нужно использовать другой селектор, разделенный запятой, поскольку MSIE принимает только "Single contextual selectors" в качестве аргумента для addRule()
Проверьте скрипт: http://jsfiddle.net/doktormolle/ubDDd/