我对JQM的变化感到困惑:
您可能知道JQM已弃用该事件:
$(document).on('pageshow', '#MyPage', function(){
并将其替换为:
$(document).on('pagecontainershow', function (e, ui) {
但是,此新事件未附加到特定页面,如前所述。然而,事件:
$(document).on('pagecreate', '#MyPage', function(){
仍然附加到特定页面,我认为其他页面事件仍然附加到特定页面。
我的问题是:
某些事件附加到页面而其他事件没有,这使得框架非常混乱。不应该更好地标准化所有事件,因为版本1.3都附加到页面上?
事件'pagecreate'和所有页面事件将来会被移植到页面,因为'pageshow'现在是版本1.4.1
有人可以解释事件在1.4.1中的运作方式
由于
答案 0 :(得分:2)
我刚刚解决了pagecontainers无法通过使用像这样的“switch case”句子附加到PAGE的问题:
$(document).on('pagecontainershow', function (e, ui) {
var ThisPage = $(':mobile-pagecontainer').pagecontainer('getActivePage').attr('id');
switch(ThisPage){
case 'Page1':
case 'Page2':
case 'Page3':
etc....
但是我担心的是,如果他们修改框架以支持(再次)附加到页面的事件,那么我应该做返工和返工。
答案 1 :(得分:0)
这里有一些基于我之前写的回复的代码,在我发现Omar发布的关于这个问题的关闭不是一个错误之后,我在我的HTML文件中转换JQM 1.3代码变得更容易了:
function setPageContainerHandlers(){
function getPageContainerEventHandler(action){
var handler = function(e, ui){
var id = $(':mobile-pagecontainer').pagecontainer('getActivePage').attr('id');
var f = window.page_handlers[action]['#' + id];
if ('function' == typeof f){
f(e, ui);
}
}
return handler;
}
var events = ['pagecontainershow', 'pagecontainerhide', 'pagecontainerbeforeload', 'pagecontainerbeforeshow', 'pagecontainerload', 'pagecontainerloadfailed', 'pagecontainerchangefailed'];
var actions = ['pageshow', 'pagehide', 'pagebeforeload', 'pagebeforeshow', 'pageload', 'pageloadfailed', 'pagechangefailed']
for(var i = 0; i < events.length; i++){
var handler = getPageContainerEventHandler(actions[i]);
$(document).on(events[i], handler);
window.page_container_handlers[events[i]] = handler;
window.page_handlers[actions[i]] = {};
}
}
function registerPageHandler(id, action, handler){
window.page_handlers[action][id] = handler;
}
然后,只要在文档头的setPageContainerHandlers()
标记中调用<script>
,
$("#results").on("pagebeforeshow", initResults);
变为
registerPageHandler("#results", "pagebeforeshow", initResults);
。
答案 2 :(得分:0)
如果不是你想要的那个,只检查当前页面并退出事件怎么样? 这样,您可以使用单独的功能作为&#34;普通&#34;。
$(document).on('pagecontainershow', function (e, ui) {
if (ui.toPage[0].id != "YOUR_PAGE_1") return;
//Do you stuff for YOUR_PAGE_1 here
});
$(document).on('pagecontainershow', function (e, ui) {
if (ui.toPage[0].id != "YOUR_PAGE_2") return;
//Do you stuff for YOUR_PAGE_2 here
});