Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/80.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
Jquery 在连续的Ajax请求中更改背景图像会导致同一图像的多个GET_Jquery_Ajax_Get - Fatal编程技术网

Jquery 在连续的Ajax请求中更改背景图像会导致同一图像的多个GET

Jquery 在连续的Ajax请求中更改背景图像会导致同一图像的多个GET,jquery,ajax,get,Jquery,Ajax,Get,标题差不多就是这么说的。我有一个元素没有背景图像。我使用jQuery的css()方法在Ajax请求期间设置了一个(微调器),然后使用removeAttr(“style”)清除它以恢复。一次只运行一个请求 然而,这不仅会导致第一次获取背景图像,而且会在以后获取,但即使如此,也不总是这样。比如说,我可能会发送5个请求,在第一个请求之后不获取spinner.gif,然后再发送一个请求,然后再发送3个请求,然后再发送2个请求 如果每个Ajax请求都有一个获取图像的方法,我会理解,但这是随机的 我在这里错

标题差不多就是这么说的。我有一个元素没有背景图像。我使用jQuery的css()方法在Ajax请求期间设置了一个(微调器),然后使用removeAttr(“style”)清除它以恢复。一次只运行一个请求

然而,这不仅会导致第一次获取背景图像,而且会在以后获取,但即使如此,也不总是这样。比如说,我可能会发送5个请求,在第一个请求之后不获取spinner.gif,然后再发送一个请求,然后再发送3个请求,然后再发送2个请求

如果每个Ajax请求都有一个获取图像的方法,我会理解,但这是随机的


<>我在这里错过了什么?

没有看到你的代码是不确定的,但是你可能会认为它有点不同: 选项a:有两个不同的css类,一个带微调器,一个不带微调器,而不是使用背景样式参数,只需切换类即可。
选项b:始终保持微调器在那里,但是在ajax调用期间先使container.hide(),然后使其.show(),在调用结束时使其.hide()。

首先,确保服务器没有停止浏览器缓存图像

其次,正如Ken所说,通常最好打开和关闭一个类,然后在jQuery中使用
addClass
removeClass
函数。使用
removeAttr('style')
对我来说似乎有点老套,并且可以删除您不想删除的其他样式

如果上述方法无法解决您的问题,您可以尝试预加载图像:

var spinner = new Image;
spinner.src = "/path/to/image.gif";
// when you need to set the image...
$('#image').css('background-image', spinner.src);
// when you need to remove the image...
$('#image').css('background-image', '');