2012-05-28 13 views
0

我剛剛開始使用Javascript,jQuery和jQuery Mobile。我正在嘗試通過在線教程,但我陷入了mobileinit事件處理程序。下面是代碼:JQM .bind函數調用掛在方法上,但腳本仍然完成

<script type="text/javascript"> 
     $(document).bind("mobileinit", function() { 
     Notes.testHelper.createDumyNotes(); 
     Notes.controller.init(); 
    }); 
</script> 

如果我把警報之前和Notes.testHelper.createDummyNotes之後();警報被調用。但是,如果我將警報正確地放在Notes.controller.init()之後,則不會調用警報。我想這意味着代碼在該函數中停止。但是,如果我在關閉腳本標記之前將警報置於該函數之外,則會調用該警報 - 這讓我感到困惑。一個方法如何掛起並且不允許一個函數的其餘部分完成但仍然讓腳本完成?

作爲一個有趣的事情,我忘了將腳本標記放在這個.bind函數的起始處,並且html的樣式是正確的。但是,一旦我把這個標籤放在這個函數中,html就會出現,但沒有被設計。

有什麼建議嗎?正如我所說的,我是JavaScript新手,所以這可能是對語言執行方式的根本誤解。

感謝您的幫助!

回答

0

mobileinit事件被觸發時,將會調用$(document).bind("mobileinit", function() { ... }的內容,這將在讀取script標記之間的代碼之後被調用。這就是爲什麼您在執行結束script標記之前放置的alert

如果您的結束標記前放alert(1);alert(2);createDumyNotes()function() {alert(3)後,你可能會得到12但不3

我想你是在正確的道路上,錯誤發生在createDumyNotes()函數。我建議你進入該功能與某些try { ... } catch(e) { ... }和準確判斷錯誤發生(假設NotesNotes.testHelper是有效的對象,Notes.testHelper.createDumyNotes()是現有的功能。

編輯

我只注意到你的函數是createDumyNotes()而不是createDummyNotes()。這只是一個拼寫錯誤嗎?

+0

這是一個拼寫錯誤,我糾正了它,但仍然沒有任何結果,我認爲.createDummyNotes()函數正在工作,因爲警報在該方法調用後執行,但不在.controller.init之後() 方法。 –

+0

你說的是對的。儘管如此,除了函數在.controller.init()中失敗之外,我可以按順序查看警報。當我在Controller文件的開頭和.init()的開頭放置一個警報時,都不會到達。 –

+0

另一個更新:我用開發人員提供的源代碼替換了我的整個控制器文件(我認爲這是正確的),但它仍然無法工作,這導致我相信這是一個軟件問題。唯一的是,我有大約4個其他腳本文件,並且他們都運行儘可能我可以告訴。 –

相關問題