Добавить класс CSS к тегу head во время выполнения

В следующей функции я пытался добавить gradClass применить градиентный фон к div во время выполнения.

function applyGradient(upto) {

    var gradStyle = "background: -webkit-linear-gradient(left, #ff1a00 20%,#ffffff 30%);"
                    + "behavior: url(PIE-1.0.0/PIE.htc);"
                    + "-pie-background: linear-gradient(#ff1a00 20%, #ffffff 30%);";

    var newPercent = Math.floor(upto / end * 100);
    gradStyle = gradStyle.replace(/20/gi, newPercent);
    gradStyle = gradStyle.replace(/30/gi, "100");
    gradClass = ".gradClass{" + gradStyle + "}";

    //method 1
    //jQuery('head').append($('<style>').text(gradClass));
    //error: IE8 some known issue in jQuery library

    //method 2
    //var styleTag = document.createElement('style');
    //styleTag.type = "text/css";
    //styleTag.appendChild(document.createTextNode(gradClass));

    //method 3
    document.getElementsByTagName('style')[0].innerHTML += gradClass;
    // Unknown runtime error in IE8.

    jQuery("#container").addClass("gradClass");
}

Код отлично работает в Chrome, но не работает в IE8. Не применив класс с помощью method 1 jQuery, я пробовал и другие два подхода.

Что я делаю неправильно?

2 ответа

Решение
var $css = $('<style/>');
$css.appendTo('head');
$css.append("\n\
.hello { color:black; }\n\
.world { color:red;   }");

Вы должны попробовать использовать функцию CSS JQuery:

http://api.jquery.com/css/

$("div").click(function () {
  var color = $(this).css("background-color");
  $("#result").html("That div is <span style='color:" +
                     color + ";'>" + color + "</span>.");
});
Другие вопросы по тегам