Ajax只触发一次,javascript文件只加载一次

时间:2010-12-29 20:07:04

标签: javascript ajax jquery load

基本上,我正在尝试使用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 ......等等。如果你们中的任何人能够帮助我,那就太好了。

3 个答案:

答案 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成为一个单独的代码片段。现在它正确加载。