Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/449.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用.css()jQuery方法更改背景图像时出现问题_Javascript_Jquery_Css_Dom - Fatal编程技术网

Javascript 使用.css()jQuery方法更改背景图像时出现问题

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(

我正在使用.css()jQuery方法更改ID为“background”的div的背景。该方法接受属性名和要为其设置的值作为参数。因此,我的代码如下:

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);