16

我正在创建一个针对 iOS 设备的网络数据库驱动的离线网络应用程序。我正在尝试使用 jQuery Mobile,但在创建各种表单时遇到了问题。

表单选项取自数据库查询,因此它们在加载后插入到页面中,因此不会发生“jQuery-Mobilification”。快速浏览一下源代码,在这个阶段似乎没有任何明显的方法可以调用它(当然这是一个 alpha 版本,我认为这将是一个相当普遍的请求,所以我希望它将会来)。我可以采取某种解决方法来做到这一点吗?我对单选按钮、复选框和选择列表特别感兴趣。

4

8 回答 8

12

更新

Beta2 有一个create事件。当 beta2 发布时,我会更新我的常见问题解答。见http://jquerymobile.com/blog/2011/07/22/jquery-mobile-team-update-week-of-july-18th/

更新常见问题解答:http: //jquerymobiledictionary.pl/faq.html


正如 CaffeineFueled 建议.page()的那样 - 是让 JQM 与 HTML 的任何部分一起工作的方法

.page()一个元素只能调用一次。在添加到页面的包装元素上调用它。它应该处理一切。

于 2010-12-13T12:08:11.713 回答
3

当前选择的答案稍有过时。使用“刷新”而不是“页面”来设置动态添加的内容(列表或表单)的样式。

如果将项目添加到列表视图,则需要对其调用 refresh() 方法来更新样式并创建添加的任何嵌套列表。例如,$('ul').listview('refresh');

通过jQuery Mobile 文档,1.0.4a

于 2011-06-16T01:20:33.393 回答
2

在您的 AJAX 调用完成并插入表单元素后,尝试调用:

$("#the-page-id").page();

我相信 jquery-mobile 团队将来会在各种 UI 元素上添加一个 .refresh() 方法来解决这个问题。

于 2010-10-28T10:58:10.630 回答
2

这在未记录的内部结构中很混乱,但以下内容对我有用:

$("#some-div").load("/html/fragment/", 
                    function() { 
                      $(this).find("input").customTextInput();  
                    });

按钮、复选框等有等效的方法。

查看http://code.jquery.com/mobile/1.0a1/jquery.mobile-1.0a1.js_enchanceControls中的[sic] 方法。

1.0Alpha2 更新:正如在使用库内部时可以预料的那样,这在最新版本中不再有效。更改customTextInput()textinput()对其进行一些修复,但由于某种原因,该主题并未完全应用。我们被警告...

于 2010-10-29T05:32:34.143 回答
1

是的,问题和你描述的一样。当文件准备好时会触发“动员”。但是由于您的离线数据库查询是异步的,它会在 document.ready 被触发后结束。因此 DOM 会在该过程的后期进行更新,并且不会将额外的 CSS 添加到所有 div 和列表项中。

我认为您必须将移动 js 的源代码更改为不在文档就绪时运行,而是在您告诉它运行时运行。然后您必须在数据库回调中调用该函数。

看来这是目前唯一的选择。

传统上我使用 jqtouch,现在使用 sencha。我在 jQuery mobile 上玩的不多。

或者 - 您可以在使用必要的 CSS 样式从数据库中查询出来之后写出您的 HTML。如果您使用 Firefox 的 Firebug 插件,您可以看到在移动运行时应用了哪些样式/类。您可以使用这些约定写出您的 HTML。不理想,但会工作。

于 2010-10-28T04:01:36.983 回答
1

naugtur 是对的,您必须在添加到 dom 的任何元素上调用 .page() ,然后效果很好:

var el = $('<input type="text"/>')
el.page();
$('#something').append(el);
于 2011-01-11T22:42:08.300 回答
1

这对我有用(jquerymobile1.7.0):

$('#formular').append('<div data-role="fieldcontain" class="ui-hide-label">' +
'<label for="name" class="ui-hidden-accessible">Name:</label>' +
'<input type="text" name="name" size="25" id="name" placeholder="Name"/>' +
'</div>');  
$('#name').textinput();

目前,所有类型的表单元素(例如滑块、文本输入等)都有所谓的插件函数来创建它们。

于 2012-01-05T09:05:20.293 回答
0

这是 Tom 谈到的有关此功能的文档的链接。不确定它们是何时添加的,但我正在使用它,它对我有用!

http://jquerymobile.com/test/docs/forms/plugin-eventsmethods.html

于 2011-02-06T21:03:24.553 回答