无法摆脱 ajax 页面加载后的内容闪烁
Can't get rid of a flash of content from after ajax page load
我有一个页面,它根据点击的元素进行不同的ajax调用。有四个 ID,在任何给定时刻只应有一个可见。当我将新的 ajax 内容加载到div 中时,我的问题就来了 - 我在以前内容的非常短暂的一秒钟内得到了一个闪光。这是我其中一个调用的函数之一(它们本质上都是相同的(。在函数的开头,我隐藏了所有内容。然后在 ajax 加载后,我显示相关的div。我很困惑为什么这行不通。应该没有闪光灯,因为所有的div都是隐藏的,对吧?
$('body').on("click", "#answer-submit", function() {
$('#games, #location, #question, #answer').css('display' , 'none');
var theAnswer = $('#challenge-answer').val();
$.ajax({
type: "POST",
url: "ajax/answer.php",
data: { answer : theAnswer },
dataType: "html",
success: function(msg){
if(parseInt(msg)!=0) {
$('#answer').html(msg);
}
}
});
$('#answer').css('display' , 'block');
});
问题是异步请求将异步发生。换句话说,你的成功函数将在$('#answer').css('display' , 'block');
之后被调用(这是一个竞争条件,但实际上是有保证的(。解决方案很简单 -- 将$('#answer').css('display' , 'block');
移动到 success
函数中:
$('body').on("click", "#answer-submit", function() {
$('#games, #location, #question, #answer').css('display' , 'none');
var theAnswer = $('#challenge-answer').val();
$.ajax({
type: "POST",
url: "ajax/answer.php",
data: { answer : theAnswer },
dataType: "html",
success: function(msg){
if(parseInt(msg)!=0) {
$('#answer').html(msg);
$('#answer').css('display' , 'block');
}
}
});
});
您甚至可以像这样链接它:
if (parseInt(msg) != 0) {
$('#answer')
.html(msg)
.css('display', 'block');
}
相关文章:
- 页面加载之间闪烁
- addClass,它更改bg图像,但在第一次加载时没有闪烁
- ng-show内容在页面加载过程中闪烁,尽管它不是真实的,并且ng-cloak不适用于FF
- 延迟 AngularJS 路由更改,直到加载模型以防止闪烁
- 删除加载javascript/css时的页面闪烁
- 使用springy.js加载多个图形时闪烁画布
- Webpack SCSS”;闪烁“;在页面加载之前
- 聚合物:页面加载时白色屏幕闪烁
- 如何在不闪烁的情况下加载Iframe
- 如何按时间间隔重新加载Iframe内容,使其不会闪烁
- 重新加载样式表,而不使用 javascript/jQuery 闪烁未设置样式的内容
- 页面在加载时闪烁 - 隐藏/显示新手总数
- 无法摆脱 ajax 页面加载后的内容闪烁
- 整个下拉菜单在页面加载时快速闪烁
- 煎茶触摸应用程序加载程序不断闪烁
- 防止加载时页面闪烁
- Jwplayer 闪烁“加载播放器时出错:无法加载播放器配置”
- 谷歌地图API -如何不加载/打开信息窗口点击,如果它已经打开停止闪烁
- Skrollr图像闪烁.Firefox预加载问题
- 图像在高分辨率图像加载时闪烁