繁体   English   中英

Ajax仅触发一次,并且javascript文件仅加载一次

[英]Ajax fires only once,and the javascript file is loaded only once

基本上,我正在尝试使用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;
    }
});

reload函数加载html并正常工作。

我真的是ajax,javascript ...等的新手。 如果你们中的任何一个可以帮助我,那就太好了。

"?t=" + Math.random()cache: true结合使用会令人困惑。

将时间戳附加到URL的做法是防止缓存的常用方法,但是您随后明确告诉它要缓存。 您可能会尝试删除cache: true选项,因为它看起来是完全多余的,只会导致问题(类似问题的内容与您在此处描述的内容类似)。

我建议尝试使用jQuery ajax快捷功能$ .get()

这非常简单,并且可能会使用完整的$ .ajax()函数消除许多正在设置的不必要的选项

感谢您的帮助-最终,我只是决定不弄乱队列中的内容。 我仍然不明白为什么会这样,但是我只是取出了ajax并将其放在$('#reload')。show()。delay(500).queue(function(){排队的东西,使ajax成为一个单独的代码段,现在可以正确加载了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM