0

在以下函数中,我一直在尝试附加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 1jQuery 应用该类,我也尝试了其他两种方法。

我究竟做错了什么 ?

4

2 回答 2

0
var $css = $('<style/>');
$css.appendTo('head');
$css.append("\n\
.hello { color:black; }\n\
.world { color:red;   }");
于 2013-01-18T18:34:00.607 回答
0

您应该尝试使用 JQuery 的 CSS 函数:

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>.");
});
于 2013-01-18T18:22:09.143 回答