jQuery Mobile增强版;动态重新生成的html
jQuery Mobile "enhance" dynamically re-generated html
jQuery Mobile 1.2.0
我使用JavaScript ($(selector).html(content)
)生成HTML,将其添加到DOM中,然后显示它($.mobile.changePage()
)。
然后我调用一个AJAX调用,获得一些数据,并重新生成html(但父元素,相同的$(selector)
,保持不变,我只是改变了它的html(...)
)。
此时,HTML没有被jQM"增强",也没有应用样式。
现在根据文档,我应该简单地调用父元素上的page()
函数,即$(selector).page()
。
文档中的其他地方建议触发create
事件,即$(selector).trigger("create")
。
问题是以上两种方法都不起作用——jQM的样式没有应用。
查看jQM的代码,我已经尝试在该元素上触发pagecreate
事件,并且它确实工作,但是,这在任何地方都没有记录,所以我不确定它,特别是关于jQM的未来版本。
在文档中我读到我只能在一个页面上调用一次page()
.
pagecreate
事件?谢谢!
要重新创建整个页面,请使用:
$(selector).trigger("pagecreate");
这是我对类似问题的回答:https://stackoverflow.com/a/14011070/1848600。这里有一个页面再造的例子。看一下,这可能会解决你的问题。
的范围是什么$(选择).trigger("创造");
你应该能够在'pageshow' jqm样式应用于元素之前的' pagcreate '事件上添加任何元素。例如,我像这样动态地添加页眉/页脚
$(document).on('pagecreate', "[data-role=page]", function() {
var header = "<div data-role='header'>some header stuff</div>";
var footer= "<div data-role='footer'>some footer stuff</div>";
$(this).prepend(header);
$(this).append(footer);
$("[data-role=header]").fixedtoolbar({tapToggle: false});
$("[data-role=footer]").fixedtoolbar({tapToggle: false});
});
确保你使用的是jquery 1.7或以上版本,我想那是on方法被引入的时候;
听起来你可能会生成DOM,然后改变页面,试试另一种方式先去页面,然后动态编辑DOM。
编辑将重新加载页面选项设置为true
$.mobile.changePage($(page), {reloadPage: true});
编辑2$(selector).children().each(function(){
$(this).trigger('create');
})
- 可以't让我的if语句处理js中的html表单输入
- 如何设置html元素填充的动画
- 使用JS如何动态更改显示的html文件中的文本背景颜色
- 如何将HTML id分配给元素,以及如何将JavaScript应用于元素
- 如何编写HTML输入的JS内联
- Dojo不解析自定义小部件的模板html中的小部件声明性
- 使用javascript将动态表从一个html页面打印到另一个html页
- 通过javascript重定向html传递php变量
- 如何使Javascript动态html表及其上的事件
- 在chrome.tabs.onCreated之后加载HTML页面
- 如何在vs2002中调试html页面
- 如何使用javascript或html下载PDF格式的填写表单
- 视频HTML没有'无法在Internet Explorer 11上工作
- HTML表单提交时未执行外部函数
- 如何将输入(type=text)从html表单传递到javascript函数
- 使用angular重定向到html页面
- 分析高度属性时出现意外值{{specs.height}}.index.html
- 在html Select中添加搜索
- 多级HTML表单
- 如何将json数据显示为html