更改div背景图片,js工作在chrome但不是ie或firefox?

时间:2014-10-05 23:02:08

标签: javascript jquery internet-explorer google-chrome firefox

基本上我希望用户能够点击并更改背景,并为特定div设置多个背景。

这适用于Google Chrome,但不适用于IE或Firefox。

HTML:

<div id="palette">
<div class="lightblue"></div>
<div class="gold"></div>
<div class="aqua"></div>
</div>

<div id="primary">
</div>

CSS:

#palette {
border: 2px solid white;
width: 25px;
}

#palette div {
height: 25px;
width: 25px;
}

.lightblue { 
background: lightblue url(http://www.textureking.com/content/img/stock/big/DSC_4279.JPG); 
}

.gold { 
background: gold url(http://www.textureking.com/content/img/stock/big/DSC_4287.JPG); 
}

 .aqua { 
background: aqua url(http://www.textureking.com/content/img/stock/big/DSC_4274.JPG); 

}

JS:

$(document).ready(function() {
// attach onclick event to your palette colors
$('#palette div').on('click', function() {
    // get background of selected palette color
    var bg = $(this).css('background');
    // change the background of the body
    $('#primary').css({ 'background': bg });
}); 
});

http://jsfiddle.net/KNutQ/1/

它没有显示任何错误和其他javascripts,所以我不确定问题是什么。

如果它很容易修复,请留下答案,如果不是,我会这样尝试:http://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_style_backgroundimage

1 个答案:

答案 0 :(得分:0)

根据CSS规范,获取速记的计算样式不应返回任何内容。您需要列出各个属性,如下所示。

也许CSS规范或Chrome将来会改变,但目前Firefox和IE的行为是正确的。

$(document).ready(function() {
    // attach onclick event to your palette colors
    $('#palette div').on('click', function() {
        // get background of selected palette color
        var backgrounds = $(this).css(['background-color','background-image', 'background-repeat', 'background-attachment', 'background-position']);
         // change the background of the body
        $('body').css(backgrounds);
    }); 
});