页面加载后添加jQueryMobile元素
问题描述:
请看下面的非常简单的代码摘录:页面加载后添加jQueryMobile元素
(...)
<div id="myDiv"></div>
<script>
function appendSomeJQueryMobileStuff() {
$('#myDiv').append($('<select/>'));
}
appendSomeJQueryMobileStuff();
$(document).on('pageinit', function() {
appendSomeJQueryMobileStuff();
});
</script>
(尝试一下@https://jsfiddle.net/ca544oob/)
为什么只用jQuery显示第一<select>
,但第二个ISN根本没有格式化?我所看到的两个函数调用之间唯一的区别就是它发生的时刻。
我该如何解决这个问题?
答
使用jQuery移动,选择菜单插件自动包含选择菜单的任何页面上进行初始化,而无需在markup.You一个data-role
属性可以从官方文档here查看详细信息。在你的情况,你是在附加pageinit
select
,所以你需要通过增加
$("select").selectmenu();
后
$('#myDiv').append($('<select/>'));
手动初始化select menu plugin
你最后的工作代码就会像..
(...)
<div id="myDiv"></div>
<script>
function appendSomeJQueryMobileStuff() {
$('#myDiv').append($('<select/>'));
}
appendSomeJQueryMobileStuff();
$(document).on('pageinit', function() {
appendSomeJQueryMobileStuff();
// Initialization of Select Menu Plugin
$("select").selectmenu();
});
</script>
希望它能为你工作。
所以任何插件将永远不会在任何元素上工作,如果它是在页面加载后应用?这意味着,对于每个新元素,需要初始化整个页面上所有元素的插件?这不是完全浪费资源吗?难道不能简单地在头部初始化一个选择菜单插件吗? – Blauhirn
对于单个页面,如果您在一个位置初始化插件,则每次添加新选择时都不需要初始化该插件。和Append语句一样,你只是实现'选择',所以一次初始化是必须的。你可以移动'$(“select”).selectmenu();'在函数调用后的'pageinit'中。 –
好的,我明白了。然而,在一个选择对象上调用'.selectmenu()'只对我更有意义。谢谢! – Blauhirn