2012-06-19 21 views
4

我在JavaScript中啓動了以下代碼:順便說一下,我總是使用github中顯示的代碼。完整的代碼可以seen hereHistory.js替換錯誤的內容

var 
     /* Application Specific Variables */ 
     contentSelector = '.tab-content,.page-content,article:first,.article:first,.post:first', 
     $content = $(contentSelector).filter(':first'), 
     contentNode = $content.get(0), 
     $menu = $('#menu,#nav-sub,.nav,.nav-sub:first').filter(':first'), 
     activeClass = 'active selected current youarehere open', 
     activeSelector = '.active,.selected,.current,.youarehere, .open', 
     menuChildrenSelector = '> li,> ul > li', 
     /* Application Generic Variables */ 
     $body = $(document.body), 
     rootUrl = History.getRootUrl(), 
     scrollOptions = { 
      duration: 800, 
      easing:'swing' 
     }; 

問題在於:

contentSelector = '.tab-content,.page-content,article:first,.article:first,.post:first', 

和:

$menu = $('#menu,#nav-sub,.nav,.nav-sub:first').filter(':first'), 

當菜單中點擊.nav,有可能改變.page-content

當單擊.nav-sub菜單,內容有.tab-content

的問題是,無論是菜單的變化.page-content被替換,而不是僅僅任一選項卡的內容或網頁內容。

任何想法如何改變?

+0

請不要使用$作爲變量,這只是不好的做法,特別是如果您也使用jQuery。 – zatatatata

+0

檢查github鏈接,我使用了那裏的代碼。但是會在後期階段考慮。 – NicoJuicy

+3

@VahurRoosimaa對於使用'$'指向'jQuery'對象的變量前綴的人來說,這是很常見的。這是你個人的選擇,不要去做,它與手頭的問題無關。 –

回答

1

修復您的內容選擇

變化從

contentSelector = '.tab-content,.page-content,article:first,.article:first,.post:first' 

TO

contentSelector = '.tab-content, .page-content, .article:first, .post:first' 
0

History.js不更換錯誤的內容; ajaxify-html5.js(您正在使用的腳本)是做正是因爲它的目的是:

  • 如果用戶點擊一個內部鏈接(和鏈接不具有no-ajaxy類),那麼腳本攔截點擊,停止瀏覽器加載頁面,並啓動頁面的Ajax請求。

    請注意,這包括頁面上的所有內部鏈接,而不僅僅是菜單中的鏈接。

  • 當Ajax請求完成時,腳本會將當前頁面上的內容替換爲響應中的內容(並執行其他一些巧妙的操作,例如在右側菜單項上設置activeClass,更新頁面標題並運行來自響應的腳本)。

    該腳本使用與contentSelector一起找到的第一個元素作爲「內容」節點。這不取決於用戶點擊了哪個鏈接。


如果你想 「ajaxify」 只菜單鏈接,您可以更改(第95行):

$body.ajaxify(); 

調用.ajaxify()你的菜單元素來代替。

如果要更新新的內容不同的元素,你可以改變(行145):

$content.html(contentHtml).ajaxify().css('opacity',100).show(); /* you could fade in here if you'd like */ 

更新另一個元素來代替。