2010-09-04 36 views
1

我正在爲我的僱主開發一個web應用程序,我正在使用一些jquery。我相當擅長PHP,但在jquery中輸了。我的問題如下:jquery ui標籤緩存難題

我有一個工作標籤頁,加載一個怪獸PHP頁面時,它第一次加載。我需要確保這個特定的選項卡只在頁面被調用時才加載(僅限第一次)。我有最初的標籤緩存,如果你點擊另一個標籤,一切都很好。問題是,當你點擊標籤內的鏈接時,它會重新加載怪物PHP頁面。這裏是代碼:

 $(document).ready(function() { 
    $("#frame").hide(); 
    $("ASA").tabs({ cache: true }); 
    $("#tabs").tabs(); 
}); 


function CH(ids){ 
     $("#tabs").tabs("select" , "#CH"); 
     $('#CH').load('test.php?id='+ids); 
     cache : true 
} 

function onIFrameLoad() { 
    $("#loader").hide('slow'); 
    $('#frame').slideDown('slow'); 
} 

功能CH是我遇到麻煩(我猜)。我有緩存:真的在那裏,但它是在黑暗中拍攝的。我想要緩存的唯一選項卡(此時)是主選項卡(ASA)。 感謝您的幫助。

回答

0

好吧...所以這是一個完整的黑客/解決方法,但我有一個解決方案。如果有人能指導我,我很樂意聽到這樣做的正確方法,但這裏是我所做的:

在每個選項卡中,我預加載了一個空白iframe。
我的鏈接現在都指向iframe而不是函數。 每個iframe調用一個函數來從父級選擇其選項卡。

結果是加載之後顯示標籤並且主標籤永不刷新。

同樣,我知道這是一個黑客,如果你有更好的方式,請讓我知道。

0

使用緩存正確的語法是

$(".selector").tabs({ cache: true }); 

然而,這隻會工作,如果每個選項卡遠程加載(即阿賈克斯)。如果您使用文檔給出的原始HTML結構,則沒有理由這麼做,因爲所有選項卡的所有內容都是最初加載的。您也無法(據我所知)將緩存打開爲單個選項卡。

我們真正需要看到的是您爲此獲得的HTML結構。此外,選擇器$("ASA").tabs({ cache: true });可能無法工作,因爲ASA不是有效的HTML元素。

+0

我是否在初始代碼中正確完成了這項工作? $(「ASA」)。tabs({cache:true}); 我基於鏈接動態加載所有其他選項卡。該函數彈出一個新的標籤打開並用_GET變量加載一個php頁面。點擊該鏈接時,就是我放棄緩存的位置。鏈接工作正常,關於新標籤打開,但立即重新加載主選項卡(這需要10秒!)AM我試圖不可能? – Mick 2010-09-04 03:44:40