Добавить класс 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:
$("div").click(function () {
var color = $(this).css("background-color");
$("#result").html("That div is <span style='color:" +
color + ";'>" + color + "</span>.");
});