2017-06-03 81 views
2

我是ajaxifying一個網站。我的菜單應該一直很粘(使用Foundation提供的粘性模塊)。但它只是對常規頁面加載粘性,而不是對Ajax重新加載(在網站上導航時也是如此)
我試圖在事件ajaxComplete發生時使用基金會文檔中提供的行重新初始化模塊6:Zurb基金會JavaScript reInit模塊不工作

$(document).ajaxComplete(function() { 
    Foundation.reInit($('.sticky')); 
    //other code 
}); 

但它似乎沒有工作,因爲我在控制檯收到此錯誤:

TypeError: Cannot read property '_init' of undefined 
    at HTMLElement.<anonymous> (foundation.core.js:103) 
    at Function.each (jquery.min.js?ver=2.1.0:2) 
    at o.fn.init.each (jquery.min.js?ver=2.1.0:2) 
    at Object.reInit (foundation.core.js:102) 
    at HTMLDocument.<anonymous> (stickyfooter.js:28) 
    at HTMLDocument.dispatch (jquery.min.js?ver=2.1.0:3) 
    at HTMLDocument.r.handle (jquery.min.js?ver=2.1.0:3) 
    at Object.trigger (jquery.min.js?ver=2.1.0:3) 
    at x (jquery.min.js?ver=2.1.0:4) 
    at XMLHttpRequest.<anonymous> (jquery.min.js?ver=2.1.0:4) 

,我不明白。這是什麼意思 ?如何在ajax重新加載後使模塊工作? 網站在行動:http://lesdeuxvagues.com/demo

回答

0

好的元素,所以它顯然是在zurb基金會一個已知的問題,粘模塊不工作後,被破壞(儘管我不知道爲什麼它會在我的情況下被銷燬,因爲我只是用AJAX重新載入其他內容),但所有其他基礎js插件似乎都在工作。 (請參閱:https://github.com/zurb/foundation-sites/issues/9047
我將嘗試的解決方案是找到另一個粘性庫來處理此特定問題。

1

您沒有發佈您的標記,但我訪問了該網站,並沒有在您的CSS中看到「.sticky」類。你在一個jQuery選擇調用

Foundation.reInit() 

。那麼

$('.sticky') 

選擇您的網頁上的任何東西?你爲什麼不嘗試:

 Foundation.reInit($('[data-sticky]')) 

這將重新初始化所有的屬性數據粘性

+0

標頭也有id#masthead這個類有粘性!我應用這行'$('。sticky').css('border','2px solid red');''在'ajaxComplete'裏面,它顯示一個紅色邊框! 對不起沒有發佈標記,它很長,所以我不知道哪個部分是相關的!我嘗試了數據粘性,並得到像以前一樣的錯誤TypeError:無法讀取未定義的屬性'_init' –

+0

當我從您的URL加載頁面時,標題是粘性的(除非在小屏幕上...您需要添加。 'stickyOn:small' 到數據選項,直到你點擊一個按鈕,它保持粘性 - 當錯誤出現這可是那麼你導航到一個新的頁面,所以你需要調用 '$ (document).foundation()' 代替'reInit()' – genestd

+0

哦,感謝'stickyOn:small',我的意思是解決這個問題呢!奇怪的是,我添加試圖調用'$(document)。基礎()',但它也行不通,我甚至沒有在控制檯中發生錯誤,所以我不知道它出錯的地方。 ,也許是因爲我的元素在'ajaxComplete'之前已經是'data-sticky'屬性了,它不會再被初始化了嗎? (因此'reInit()'嘗試),但顯然我錯了某處! –