2013-04-24 17 views
2

我不知道爲什麼,但當我以不同的順序包含腳本時,它似乎會導致一些問題。jQuery vs jQuery Mobile - 腳本序列是否重要?

當它是這樣說的:

<script src="static/jquery.mobile-1.3.1.min.js"></script> 
    <script src="static/jquery-1.9.1.min.js"></script> 
    <script src="static/jquery-migrate-1.1.1.min.js"></script> 

我的程序運行!小提琴的作品太:http://jsfiddle.net/yvonnezoe/MKfLU/4/ 但jQuery手機的css主題不再適用於我的網絡應用程序。

當它是這樣說的:

<script src="static/jquery-1.9.1.min.js"></script> 
    <script src="static/jquery-migrate-1.1.1.min.js"></script> 
    <script src="static/jquery.mobile-1.3.1.min.js"></script> 

它不工作,給了我「未定義」變量「爲textInput」,即使是在小提琴太:http://jsfiddle.net/yvonnezoe/7NZzr/

有人能告訴我爲什麼嗎? :(

+0

jquerymobile東西上http://jsfiddle.net/yvonnezoe/7NZzr /正在爲我工​​作。 – 2013-04-24 00:59:28

+0

怎麼回事? :(它給了我「未定義」我在這裏使用Firefox。 – yvonnezoe 2013-04-24 01:12:51

+0

我只有在這個站的鉻,它的工作很好。 – 2013-04-24 02:57:02

回答

4

爲了理解這個問題,您需要了解jQuery Mobile的工作原理。

初始化順序在第二個例子中不是問題。如果這是一個問題,所有這些元素將不會被設計。在你的情況下,你不知道的是,當jQuery Mobile樣式形成元素時,它會改變它們的DOM結構。因此,按鈕和輸入元素不再像在非風格的第一個示例中那樣處於相同的位置。

這是一個修復你的jsfiddle:http://jsfiddle.net/FmPPW/

更改此:

$('.TextInput').empty(); 
textInput = $(this).prev('.TextInput').val(); 

這樣:

$('.TextInput').empty(); 
textInput = $(this).parent().prev().find('.TextInput').val(); 
+1

:D謝謝你的解釋和解決方案!你救了我的一天! – yvonnezoe 2013-04-24 07:50:08

1

的文檔「默認配置」關於mobileinit事件會談: http://jquerymobile.com/demos/1.0a4.1/docs/api/globalconfig.html

因爲mobileinit事件在執行時立即觸發, 你需要jQuery Mobile的前事件處理程序綁定。加載 因此,建議將鏈接到您的JavaScript文件在以下 順序:

<script src="jquery.js"></script> 
<script src="custom-scripting.js"></script> 
<script src="jquery-mobile.js"></script> 

快速入門指南顯示了相同的訂單,頁面模板:http://jquerymobile.com/demos/1.2.1/docs/about/getting-started.html

看來,jQuery的需求,以加載的jQuery移動工作。

+0

但是,當我把這個序列時,它不適用...任何想法爲什麼? – yvonnezoe 2013-04-24 03:23:07

+0

我仍然不知道到底發生了什麼,以及如何解決這個問題:(可否請你多解釋一下? – yvonnezoe 2013-04-24 03:35:54