使用jquery';刷新后的s show()
我在每个文件中都有这个div:使用jquery';刷新后的s show(),jquery,show,document-ready,Jquery,Show,Document Ready,我在每个文件中都有这个div: <div id="header" class="hide" style="top: 0px; width: 100%; z-index: 1000;"> 我的问题是: 我正在经历一种非常奇怪的行为,有两种情况: 场景1(确定): 文件准备就绪,显示标题 单击链接 将加载新文档并显示#标题 情景2(问题): 文件准备就绪,显示标题 执行浏览器刷新(使用F5键) 新文档已加载,但并不总是显示#标题 我的第一个想法是:“文档仍在加载,可能还没有标题”,但
<div id="header" class="hide" style="top: 0px; width: 100%; z-index: 1000;">
我的问题是:我正在经历一种非常奇怪的行为,有两种情况: 场景1(确定):
jQuery的show()和刷新是否存在众所周知的问题? 还请注意,我正在阻止缓存ajax调用。我仔细检查了ajax响应,它带来了正确的数据(document).ready(函数(){
$(document).ready(function () {
$("#loading-header").show();
$.ajax({
cache: false,
url: '/PersonsAjax/Header',
success: function (data) {
$("#loading-header").hide();
//console.debug("Is there a header? " + $("#header").size());
}
}).done(showHeader());
});
//add a looping function to check for header
function showHeader(){
var TO = 0;
var header = document.getElementById('header');
if(header){
header.style.display="block";
}else if( TO < 10 ){
setTimeout(showHeader,100);
TO++;
}else{
console.log("showHeader Timed out");
}
}
$(“#加载标题”).show();
$.ajax({
cache:false,
url:“/PersonsAjax/Header”,
成功:功能(数据){
$(“#加载头”).hide();
//调试(“是否有头?”+$(“#头”).size();
}
}).done(showHeader());
});
//添加循环函数以检查标头
函数showHeader(){
var-TO=0;
var header=document.getElementById('header');
如果(标题){
header.style.display=“block”;
}否则,如果(至<10){
setTimeout(showHeader,100);
TO++;
}否则{
日志(“showHeader超时”);
}
}
Ajax有一个done函数,因为onsuccess只是从httpResponse请求的,而不是实际完成的。看看他们是如何在jQuery Ajax API文档中编写的
您可以尝试使用循环我将使用$(window.load(function(){})
而不是$(document).ready(函数(){})代码>,在本例中
$(window).load(function() {
$("#loading-header").show();
$.ajax({
async: true,
type: 'GET',
url: '/PersonsAjax/Header',
data: {},
success: function (data) {
$("#loading-header").hide();
console.debug("Is there a header? " + $("#header").size());
$("#header").show(); // **** PROBLEM *****
}
});
});
您是否尝试过在超时时间结束该节目,以查看是否存在加载冲突<代码>设置超时(函数(){$(divToShow).show();},2000)代码>如果它这样做,则很可能是Dom内容问题。另外,我相信ajax有一个done()
功能,这应该是您在展会上看到的。我试图通过“console.debug”来证明这不是dom加载问题。如果我发现这是一个加载问题,我能做什么?因为超时作为最终解决方案不是很优雅。另外,我应该提到,在控制台中执行$(“#header”).show()一段时间后确实会显示标题。好的,这是一个加载问题。因此,您应该做的是添加doneI进行了一些“刷新”测试,但有时仍会显示#标题,有时则不显示。不过,它似乎提高了“显示速率”。我使用循环函数进行了更新,但它确实有一个超时,无法创建无限循环。$(window.load)和$(document.load)之间有什么区别?我用以下回答自己:,听起来是答案,让我试着将其标记为已接受。它确实有效,抱歉,延迟接受答复。现在我仍然很好奇什么时候应该使用$(document.ready vs$(window.load)。我确实理解它们之间的区别,但要说在其他场景中应该使用哪一种并不容易
$(window).load(function() {
$("#loading-header").show();
$.ajax({
async: true,
type: 'GET',
url: '/PersonsAjax/Header',
data: {},
success: function (data) {
$("#loading-header").hide();
console.debug("Is there a header? " + $("#header").size());
$("#header").show(); // **** PROBLEM *****
}
});
});