如何修复jquery中的故障

如何修复jquery中的故障,jquery,ajax,Jquery,Ajax,我用这个jquery代码在我的网站上切换页面内容。它会切换内容,但在切换到新页面之前,页面似乎会闪烁。我认为这可能与CSS在更改内容之前没有正确加载有关,因为如果我单击链接查看页面,我的jquery滚动条不会正确加载,但是如果我刷新页面一次,它似乎又正常工作了 在切换之前,代码是否有办法检查一切是否就绪,以避免出现故障闪烁 这里是切换页面内容的代码 $(document).ready(function() { var hash = window.location.hash.substr(1);

我用这个jquery代码在我的网站上切换页面内容。它会切换内容,但在切换到新页面之前,页面似乎会闪烁。我认为这可能与CSS在更改内容之前没有正确加载有关,因为如果我单击链接查看页面,我的jquery滚动条不会正确加载,但是如果我刷新页面一次,它似乎又正常工作了

在切换之前,代码是否有办法检查一切是否就绪,以避免出现故障闪烁

这里是切换页面内容的代码

$(document).ready(function() {

var hash = window.location.hash.substr(1);
var href = $('#nav li a').each(function(){
    var href = $(this).attr('href');
    if(hash==href.substr(0,href.length-5)){
        var toLoad = hash+'.html #content';
        $('#content').load(toLoad)
       }                                            
});

$('#nav li a').click(function(){

    var toLoad = $(this).attr('href')+' #content';
    $('#content').fadeOut('fast',loadContent);
    $('#load').remove();
    $('#wrapper').append('<span id="load">LOADING...</span>');
    $('#load').fadeIn('normal');
    window.location.hash = $(this).attr('href').substr(0,$(this).attr('href').length-5);
    function loadContent() {
        $('#content').load(toLoad,'',showNewContent())
    }
    function showNewContent() {
        $('#content').fadeIn('normal',hideLoader());
    }
    function hideLoader() {
        $('#load').fadeOut('normal');
    }
    return false;

});

 });
$(文档).ready(函数(){
var hash=window.location.hash.substr(1);
var href=$('#nav li a')。每个(函数(){
var href=$(this.attr('href');
if(hash==href.substr(0,href.length-5)){
var toLoad=hash+'.html#content';
$(“#内容”).load(toLoad)
}                                            
});
$('#nav li a')。单击(函数(){
var toLoad=$(this.attr('href')+'#content';
$(“#content”).fadeOut('fast',loadContent);
$(“#加载”).remove();
$(“#包装器”).append('LOADING…');
$('加载').fadeIn('正常');
window.location.hash=$(this.attr('href').substr(0,$(this.attr('href').length-5);
函数loadContent(){
$('#content').load(toLoad',showNewContent())
}
函数showNewContent(){
$('content').fadeIn('normal',hideLoader());
}
函数hideLoader(){
$('加载').fadeOut('正常');
}
返回false;
});
});

我看到一个问题,这两行:

$('#content').load(toLoad,showNewContent())
$('#content').fadeIn('normal',hideLoader());
需要:

$('#content').load(toLoad,showNewContent);
$('#content').fadeIn('normal',hideLoader);
如果不传递任何数据,可以忽略它,完整参数需要引用命名函数或匿名函数。您得到的是执行未定义的
showNewContent()
的结果

function showNewContent() {
  $("body").scrollTop();
  $('#content').fadeIn('normal',hideLoader);  
}

我们可以有一个链接到“闪烁”的页面吗?为什么要设置
var href=$('#nav li a')。each()?谢谢你,伙计,这似乎工作得很好!然而,我的滚动条似乎仍然出现故障,如果我从导航链接单击它的页面,我需要刷新浏览器,使其开始正常工作。这可能与内容转换器jquery或滚动条的jquery有关吗?我认为您遇到了这样一种情况:页面的高度变为小于旧内容,因此视口向上移动。我建议在showNewContent方法中添加scrollTo调用,以便在显示新内容时始终将浏览器滚动到顶部。像这样吗?函数showNewContent()$('#content').scrollTo.fadeIn('normal',hideLoader);