2013-04-21 52 views
0

我有一個簡單的登錄對話框,我彈出在文檔加載:jQuery Mobile 1.3.1未捕獲錯誤:在初始化之前無法在彈出框中調用方法;試圖調用方法「開放」

<div data-role="popup" id="signupPopup" data-theme="a" class="ui-corner-all" data-dismissible="false" data-add-back-btn="true" data-transition="pop"> 
    <h3 class="centerText">Login</h3> 

    <div class="popup"> 
     <form>    
      <input type="email" name="email" id="email" class="centerText" placeholder="email" data-theme="a"/> 
      <input type="text" name="zip" id="zip" class="centerText" placeholder="pass" data-theme="a"/>     
     </form> 
    </div> 
</div> 

$(document).ready(function(){ 
    $("#signupPopup").popup('open'); 
}); 

這是一個jsFiddle of the example。現在,在正常的加載彈出彈出沒有問題,然後它更新網址哈希http://myurl.com/#&ui-state=dialog,如果我點擊重新加載這個哈希在URL我得到的JS錯誤:Uncaught Error: cannot call methods on popup prior to initialization; attempted to call method 'open'

我試圖複製上http://view.jquerymobile.com/master/demos/widgets/popup/

相同的行爲通過將具有這樣的鏈接:

http://view.jquerymobile.com/master/demos/widgets/popup/#&ui-state=dialog但我不能複製同樣的錯誤。所以,我想知道是否有人遇到這個錯誤以及他/她如何解決它?順便說一句,我確實檢查了谷歌關於這個錯誤的所有前20個鏈接,但沒有一個幫助過,其中包括很少。另外,值得注意的是,如果我使用jQuery Mobile 1.2和jQuery 1.7.1,我不會得到這個錯誤。

我正在使用jQuery Mobile 1.3.1和jQuery 1.9.1。

回答

2

$(document).ready()不應該在jQuery Mobile中使用。而是使用pageinit

http://jquerymobile.com/demos/1.2.1/docs/api/events.html

$(document).bind('pageinit', function() { 
    $("#signupPopup").popup('open'); 
}); 
+0

這對我工作兄弟.... Thx – 2013-07-31 10:24:19

+0

小提琴:http://jsfiddle.net/ArtemGr/bwfm3yc2/ – ArtemGr 2015-01-02 10:11:37

2

尼古拉,

嘗試調用open方法之前初始化彈出。

$("#signupPopup").popup(); 
    $("#signupPopup").popup('open'); 
4

您可能沒有在「頁面」elemenet中彈出HTML。

<div data-role="page"> <!-- popup inside here --> </div> 

我發現,當我不小心把它,我需要調用.popup頁面外(),以先初始化,但是按鈕或彈出窗口內的其他元素從不使用這種方法進行初始化。根修正是將彈出框放入頁面元素中。

+0

非常感謝這!我想補充說,它不只是任何頁面,彈出窗口似乎需要嵌套在您調用該彈出窗口時所處的活動頁面中。 – zstew 2014-08-11 19:20:53

相關問題