Javascript 使用.css()jQuery方法更改背景图像时出现问题
我正在使用.css()jQuery方法更改ID为“background”的div的背景。该方法接受属性名和要为其设置的值作为参数。因此,我的代码如下:Javascript 使用.css()jQuery方法更改背景图像时出现问题,javascript,jquery,css,dom,Javascript,Jquery,Css,Dom,我正在使用.css()jQuery方法更改ID为“background”的div的背景。该方法接受属性名和要为其设置的值作为参数。因此,我的代码如下: function changeBackground() { $("#background").css("background-image", "url(../assets/background2.jpg)"); } window.onload = function() { window.addEventListener(
function changeBackground() {
$("#background").css("background-image", "url(../assets/background2.jpg)");
}
window.onload = function() {
window.addEventListener("click", changeBackground);
};
最初,background image
的值为url(../assets/background.jpg)
。奇怪的是,它在我的编辑器(方括号.io)用作实时预览的Chrome会话中运行良好,但在我正常打开Chrome或使用Firefox和Opera时却不行
编辑:问题在于路径:显然jQuery本身确保了后台源代码的更改,而不是临时更改css表中的值(我认为代码是这样做的)。这意味着在本例中,必须相对于javascript文件设置图像路径url(assets/background2.jpg)
,而不是url(../assets/background2.jpg)
。如果需要的话,我希望任何知识更渊博或说话更流利的人来纠正我
然而,另一个问题出现了,在jQuery更改了其源代码后,背景图像的其余样式(见下文)被完全忽略。你怎么能解决这个问题
#background {
background-image: url(../assets/background.jpg);
background-attachment: fixed;
background-position: center;
background-size: cover;
position: fixed;
top: 0em;
left: 0em;
height: 100%;
width: 100%;
margin: 0em;
}
使用“而不是”:
如果不起作用,试试这个
$("#background").css({backgroundImage : 'url(../assets/background2.jpg)'});
还是这个
$("#background").css('background', 'url("../assets/background2.jpg")');
添加类。新背景
// css
.new-background {
background-image: url(../assets/background2.jpg);
}
及
你确定相对路径是正确的吗?而且你似乎使用了本机JS和jQuery的奇怪组合。最好还是坚持使用一个。你是否尝试了绝对路径并检查了控制台的错误?你能用一个JSFIDLE.net示例重现这个问题吗?@j08691控制台告诉我问题出在路径上——我修复了它,如我的编辑中所示。a显然,它仍然是相对的,但与JS文件,而不是CSS文件有关。//CSS.new background{background image:url(../assets/background2.jpg)!important;}()()()())
// css
.new-background {
background-image: url(../assets/background2.jpg);
}
// js
function changeBackground() {
$("#background").addClass('new-background');
}
$(window).click(changeBackground);