基本上,我正在尝试使用ajax为我网站上的每个子页面加载html和JavaScript文件。但是,JavaScript文件仅为单击的第一个子页面加载。如果我点击下一个子页面,只有那个加载的html文档,但javascript没有。这是通过查看firebug控制台:首先点击,然后点击联系人:
GET http:..../about.html?t=0.19504348425731444
GET http:..../about.js?t=0.8286968088896364
GET http:..../contact.html?t=0.8467537141462976
(!!!NO GET FOR contact.js!!!)
无论如何,我尝试使用live()来绑定click事件但它仍然不起作用。这是我的代码的相关片段:
$('.subpage').live('click',function(){
$('#main').css({'cursor':'crosshair'});
navsubpage = true;
subpage = $(this).attr('id');
$('.subpage').each(function(index) {
$('#'+$(this).attr('id')).fadeOut('500');
$('#'+$(this).attr('id')+'select').fadeOut('500');
});
$('#'+subpage+'h').css({'background-color':'#000','display':'block'});
$('#'+subpage+'h').animate({'width':'375px','top':'120px','left':'100px','font-size':'400%'},'500');
subtop = $('#'+subpage+'h').css('top');
subleft = $('#'+subpage+'h').css('left');
$('#pane').css({'border-left-width':'0px'});
$('#nav').css({'background':'url("images/'+$(this).attr('id')+'.jpg") no-repeat 0px 0px'});
$('#nav').animate({'left':'0px'},'4000','swing',function(){
$('#reload').show().delay(500).queue(function(){
alert("made it");
$.ajax({
url: subpage+".js?t=" + Math.random(),
dataType: 'script',
type: 'get',
});
});
});
reload(subpage);
});
$('#main').click(function(){
if(navsubpage==true){
$('#main').css({'cursor':'auto'});
$('#reload').hide();
$('#pane').css({'border-left-width':'10px'});
$('#'+subpage+'h').animate({'width':'150px','top':subtop,'left':subleft,'font-size':'200%'},'2000',function(){
$('#'+subpage+'h').css({'display':'none'})});
$('#nav').animate({'left':'415px'},'3000','swing', function(){
$('.subpage').each(function(index) {
$('#'+$(this).attr('id')).fadeIn('3000');
$('#'+$(this).attr('id')+'select').fadeIn('3000');
});});
navsubpage = false;
}
});
重装功能加载html并且工作正常。
我真的很喜欢ajax,javascript ......等等。如果你们中的任何人能够帮助我,那就太好了。
答案 0 :(得分:0)
令人困惑的是,"?t=" + Math.random()
与cache: true
相结合。
向URL附加时间戳的做法是阻止缓存的常用方法,但是您明确告诉它您希望缓存它。您可以尝试删除cache: true
选项,因为它看起来完全是多余的,并且只会导致问题(类似于您在此处描述的内容)。
答案 1 :(得分:0)
我建议尝试使用jQuery ajax快捷方式函数$.get()
它非常简单,可能会使用完整的$ .ajax()函数删除许多不必要的选项
答案 2 :(得分:0)
感谢帮助人员 - 最后我决定不搞乱队列的东西。我仍然不明白它为什么会起作用,但我只是取出了ajax并把它放在$('#reload')之外.show()。delay(500).queue(function(){,消除延迟和排队的东西,并使ajax成为一个单独的代码片段。现在它正确加载。