javascript - jQuery Ajax : Old content flicks in before showing the loaded content

标签 javascript jquery ajax

我的 ajax 代码有问题。 我有一些链接和内容区域。 当我单击链接时,我隐藏内容区域,加载新数据并再次显示内容区域。它可以工作,但是当显示内容区域时,您会看到一小段时间旧内容,然后闪烁到新内容。

我可以以某种方式让加载屏幕显示更长时间吗? 此外,隐藏功能仅在我第一次使用链接时有效。

jQuery(文档).ready(function() {

jQuery('.ajax').click(function(){

var toLoad = jQuery(this).attr('href');
jQuery('#ajax_content').hide('慢',loadContent);
jQuery('#load').remove();
jQuery('#main').append('正在加载...');
jQuery('#load').fadeIn('正常');

函数加载内容(){
    jQuery('#ajax_content').load(toLoad,'',showNewContent())
}
函数显示新内容(){
    jQuery('#ajax_content').show('正常',hideLoader());
}
函数 hideLoader() {
    jQuery('#load').fadeOut('正常');
}
返回假;

});

});

我有来自this source的ajax代码

提前致谢!

最佳答案

您可以在发出 AJAX 检索命令之前尝试清空内容元素:

jQuery(document).ready(function() {

jQuery('.ajax').click(function(){  

var toLoad = jQuery(this).attr('href'); 
jQuery('#ajax_content').hide('slow',loadContent);  
jQuery('#load').remove();  
jQuery('#main').append('<span id="load">LOADING...</span>');  
jQuery('#load').fadeIn('normal');  

function loadContent() {  
    jQuery('#ajax_content').empty().load(toLoad,'',showNewContent())  
}  
function showNewContent() {  
    jQuery('#ajax_content').show('normal',hideLoader());  
}  
function hideLoader() {  
    jQuery('#load').fadeOut('normal');  
}  
return false;  

});  

});

为了使应用程序更加健壮,您还可以使用 .queue() 方法来构建操作队列。然后,当用户在一个链接已经加载时单击另一个链接时,很容易取消。

关于javascript - jQuery Ajax : Old content flicks in before showing the loaded content,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2975436/

相关文章:

php - 使用自定义 MVC 从 JQuery ajax()、PHP 和 MySQL 检索 JSON 数据

javascript - 使用 AJAX、Javascript/jQuery、DOM 和 Facebook Like 按钮进行无限滚动

javascript - $valid 表单属性未定义

javascript - 如何在从隐藏 div 动态复制的附加按钮上添加事件监听器?

javascript - jQuery排除点击事件中的子元素

jquery - jQuery 对话框中的 CKEditor 实例

javascript - Jquery Deferred.resolve不传递参数

javascript - 页面加载的多个 AJAX 请求很慢。方法不好?

javascript - 期望进行赋值或函数调用,但在函数中看到表达式错误

Javascript - 分割用逗号分隔的字符串(最好的方法)