簡體   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