2

我不知道为什么,但是当我以不同的顺序包含脚本时,它似乎会导致一些问题。

当它是这种方式时:

    <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>

我的程序有效!Fiddle 也可以工作:http: //jsfiddle.net/yvonnezoe/MKfLU/4/ 但是 jQuery mobile 的 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”的“未定义”,即使在 Fiddle 上也是如此:http: //jsfiddle.net/yvonnezoe/7NZzr/

有人能告诉我为什么吗?:(

4

2 回答 2

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();
于 2013-04-24T07:35:04.547 回答
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-mobile 工作。

于 2013-04-24T03:03:44.427 回答