2012-11-24 53 views
2

我正在使用jquery mobile最新版本。一切工作正常。我有一些自定義的外部和內部JS腳本。有一個jQuery幻燈片在主頁,它工作正常,但是當通過按回按鈕或單擊任何鏈接,我導航到另一頁並返回到主頁,幻燈片將停止工作。jquery Mobile - JavaScript停止瀏覽其他頁面後工作

如果我添加這些鏈接data-ajax="false",那麼幻燈片在任何情況下都能正常工作。但我不想使用data-ajax="false"作爲快速響應。我怎麼解決這個問題?我在jQuery手機上有點新鮮。

+0

你的init是在'pageinit'事件處理程序中而不是'$(document).ready'中提到的[這裏](http://jquerymobile.com/test/docs/api /events.html)。這解決了我的一些初始問題。 – jaudette

回答

3

根據docs,當您在jQuery Mobile中的頁面之間導航時,默認情況下會重新加載內容。當您使用data-ajax="false"強制jQuery Mobile完全重新加載頁面時,您的腳本正在工作。

看來,你有以下幻燈片電話:

$(function(){ 
    // init gallery on DOM ready 
    $('.gallery').slideshow(); 
}); 

但是當你使用jQuery Mobile,您將需要重新初始化您的畫廊,當某些頁面重新加載頁面之間進行導航,因此通用代碼看起來像下面這樣:

$(document).bind('pageinit', function() { 
    // init gallery when current page loaded 
    $('.gallery').slideshow(); 
}); 
+0

是的,我認爲你是對的。但是你的解決方案將解決內部的JS問題。但幻燈片腳本來作爲外部腳本。 '' 我該如何解決這個問題? –

+0

嘿......使用這樣的代碼,即使在當前的「瀏覽器會話」中加載插件,您也會多次加載插件。 F.E.你可以檢查幻燈片顯示是否存在:'setInterval'內部的if($ .fn.slideshow),但我認爲最好使用依賴管理器(比如requirejs),或者在全局腳本中添加'refineslide.min.js' 。 – Inferpse

3

嘗試在頁面加載這樣做:

$(document).ready(function(){ 
    $('div[data-role=page]').page('destroy').page(); 
}); 

應該刷新頁面,然後讓一切重新工作。

相關問題