2011-12-29 28 views
1

當你去到一個特定的URL那裏的初始內容被加載,然後它解釋的url參數,然後內容改變。隱藏/顯示內容時jQuery無意的延遲

在我的本地機器上發生這種「l split分裂」,又如此之快,你看不到任何延遲。但是,如果您在大約5秒後轉到該URL,內容將最終隱藏並顯示正確的內容。 js在下面,這裏有一個非常接近的html代碼片段。

例如URL:www.example.com/page1.aspx?nav=2012?id=113 & PID = 2

HTML

<div id="default">content</div> 
    <div id="mobile2012" style="display:none;">content</div> 

的Javascript

var querystring = location.search.replace('?', '').split('?'); 
var queryObj = {}; 
for (var i = 0; i < querystring.length; i++) { 
    var name = querystring[i].split('=')[0]; 
    var value = querystring[i].split('=')[1]; 

    queryObj[name] = value; 
} 
//////// 
var subNavDestination = queryObj["nav"]; 
//////// 
urlParams(subNavDestination); 
function urlParams(subNavDestination) { 
    var displayInformation; 

    switch (subNavDestination) { 
     case 'about': displayInformation = "AboutEarthquakeIns"; 
      break; 
     case 'homeowner': displayInformation = "Homeowner2012Content"; 
      break; 
     case 'renter': displayInformation = "Renter2012Content"; 
      break; 
     case 'mobilehome': displayInformation = "Mobilehome2012Content"; 
      break; 
     case 'condo': displayInformation = "Condominium2012Content"; 
      break; 
     case '2011': displayInformation = "pdf2011"; 
      break; 
     case '2012': displayInformation = "pdf2012"; 
      break; 
     default: displayInformation = "GeneralContent"; 
    } 

    if (displayInformation != "AboutEarthquakeIns") { 
     //$('#PolicyTypes2012 .sideNavPolicyType').slideToggle(); 
     $('#PolicyTypes2011 .sideNavCoverage').slideUp(); 
    } 

    if (displayInformation == "pdf2011") { 
     controlContentVisibility("pdf2011"); 
     $('#PolicyTypes2011 .sideNavPolicyType').slideToggle(); 
     $('#PolicyTypes2011 .sideNavCoverage').slideUp(); 
     setActiveLink(); 
     setSelectedPolicyType(); 
     hideYearSubMenus(2012); 
    } 
    else if (displayInformation == "pdf2012") { 
     controlContentVisibility("pdf2012"); 
     $('#PolicyTypes2012 .sideNavPolicyType').slideToggle(); 
     $('#PolicyTypes2012 .sideNavCoverage').slideUp(); 
     setActiveLink(); 
     setSelectedPolicyType(); 
     hideYearSubMenus(2011); 
    } 

    controlContentVisibility(displayInformation); 
} 
+0

重新考慮你的結構。爲什麼要將所有這些數據提供給客戶,然後隱藏大部分數據?效率低下,肯定會導致不良的用戶體驗。 – 2011-12-29 22:08:33

+0

此外,您的查詢字符串語法不正確。應該永遠不會超過一個問號。 – 2011-12-29 22:10:14

+0

有一個內容管理系統與我無法控制的查詢字符串參數混淆,這就是爲什麼它有兩個?至於爲用戶提供所有這些內容......這是90%的文字,我正在努力避免有多頁廢話。謝謝你的想法。 – BRogers 2011-12-29 22:27:29

回答

0

當你點擊URL(我假設在遠程站點)時,需要額外的時間來加載您將選擇的div的內容顯示在可以被解析/呈現之前。

+0

這實際上是與頁面呈現,但我不認爲這會是。 – BRogers 2011-12-29 22:14:48

+0

我禁用了所有顯示的內容,並且只顯示請求,並且仍然很慢。 – BRogers 2011-12-30 19:09:04

0

我的猜測是,你必須包含的JavaScript作爲單獨的腳本的一部分即.js文件而不是HTML文件,並耽誤你看到的是時間採取瀏覽器下載該腳本

+0

即使它是內聯的,我仍然有相同的問題。 – BRogers 2011-12-29 23:39:17

+0

它似乎知道該怎麼做,只是等待所有內容在切換出內容之前在aspx頁面中加載了所有內容。與此相關的難點在於默認內容是首先加載的內容之一。我通過刪除一個額外的包含文件將時間減少到了一半。 – BRogers 2011-12-29 23:39:44