2013-05-13 82 views
0

我想在我的代码中的特定区域上手动触发页面加载事件。使用jquery mobile,phonegap。如何在jquery mobile中添加自定义页面加载事件

对于防爆:

function jsonCallback(){ 
    // do some thing 
    pageLoad('#page2'); 
} 

pageLoad(){ 
    // trigger page2 load event 
} 

$(document).on("pageload", "#page2", function(e) { 

}); 

编辑: 荫使用,其中将要创建数据库

document.addEventListener('deviceready', onDeviceReady, false); 

function onDeviceReady() { 
    //code to generate db 
    //now i need to trigger the page1 pageshow event where it will fetch the result from database 
} 

任何想法的PhoneGap deviceready事件?

谢谢

+0

你到底想达到什么目的? pageload事件不能手动触发。如果打开另一个html文件,只能通过使用$ .mobile.loadPage()和$ .mobile.changePage()来完成。它不能用于内部#页面。 – Gajotres 2013-05-13 08:11:31

回答

2

你不能手动触发页面事件,因为他们不这样工作。

只有在页面初始化或您的情况下才会自动触发$.mobile.loadPage()功能被使用。

此外,我不认为你想触发pageload事件,因为,就像我告诉你前面就会引发$.mobile.loadPage()后才功能。该函数不接受页面作为参数,而是必须提供真正的html文件。

或者,你可以启动changePage功能是这样的:

$.mobile.changePage("#page2"); 

此功能可以用#页参数一起使用。还有一件事页面加载事件也可以用$.mobile.changePage()触发,但只限于打开另一个html文件,就像 $ .mobile.loadPage()函数一样。

编辑:

不幸的是,从评论中的解决方案将无法工作。只是因为你可以暂停页面加载。但没有什么能阻止你作弊。让您的初始页面为空,使用其页面事件查询数据库并动态创建索引页面。然后,将changePage更改为#index页面。这是可以完成的唯一方法。

工作例如:http://jsfiddle.net/Gajotres/g7S58/

在这个例子中,我不查询数据库,因为我没有任何不过的例子,因为我创建一个动态网页内容,并将它附加到第二#INDEX页是相似的。这是没有问题的唯一方法。

HTML:

<!DOCTYPE html> 
<html> 
    <head> 
     <title>jQM Complex Demo</title> 
     <meta http-equiv='Content-Type' content='text/html; charset=utf-8'/> 
     <meta name="viewport" content="width=device-width; initial-scale=1.0; maximum-scale=1.0; minimum-scale=1.0; user-scalable=no; target-densityDpi=device-dpi"/> 
     <link rel="stylesheet" href="http://code.jquery.com/mobile/1.3.1/jquery.mobile-1.3.1.min.css" /> 
     <script src="http://code.jquery.com/mobile/1.3.1/jquery.mobile-1.3.1.min.js"></script>  
    </head> 
    <body> 
     <div data-role="page" id="hidden"> 

     </div> 
     <div data-role="page" id="index"> 
      <div data-theme="b" data-role="header"> 
       <h1>Index page</h1> 
      </div> 

      <div data-role="content"> 

      </div> 
     </div>   
    </body> 
</html> 

的Javascript:

$(document).on('pagebeforecreate', '#hidden', function(e){ 
    $("<ul>").attr({'data-role':'listview','data-inset':'false','id':'mylist'}).append('<li><a>List element 1</a></li>').appendTo($('#index [ data-role="content"]')); 
    $.mobile.changePage('#index'); 
}); 
+0

感谢您的回复,最初iam创建脱机storage.Once数据库已创建iam获取回调方法,我需要手动加载页面。 – Srinivas 2013-05-13 08:27:29

+0

是否有可能加载内部的HTML无论我想要它。例如我有index.html,其中包含3页[page1,page2,page3]。我应该能够手动触发页面加载事件 – Srinivas 2013-05-13 08:29:34

+0

当你说load时,你的意思是show?因为如果你打开有3页的index.html,所有这些页面都将被加载。您只需要在需要时显示它们。 – Gajotres 2013-05-13 08:31:56