【发布时间】:2012-06-17 16:48:55
【问题描述】:
我正在寻找一种在加载第一页之前利用 JQM 并覆盖内容的方法。
JQM 像这样初始化(来自最新的 JQM 代码):
( function( $, window, undefined ) {
var $html = $( "html" ),
$head = $( "head" ),
$window = $( window );
// trigger mobileinit event
$( window.document ).trigger( "mobileinit" );
...
$.extend($.mobile, {
// find and enhance the pages in the dom and transition to the first page.
initializePage: function() {
...
// alert listeners that the pagecontainer has been determined for binding
// to events triggered on it
$window.trigger( "pagecontainercreate" );
...
因此,我可以利用 两个事件:mobileinit 和 pagecontainercreate。我知道这在 HTML 中很容易,如下所示:
<script type="text/javascript" src="jquery-1.7.1.min.js"></script>
<script type="text/javascript">
$( window ).bind( 'pagecontainercreate', function() {
console.log("HELLO");
});
</script>
<script type="text/javascript" src="jquery.mobile-1.1.0.multiview_con.js"></script>
<script type="text/javascript" src="plugin.js"></script>
但是如果我想在 JQM 之后从 INSIDE plugin.js 绑定到这些事件怎么办?如果我在 plugin.js 中放置相同的侦听器,它永远不会触发。我想,因为为时已晚。但是我需要防止默认加载第一页,所以一旦 JQM 尝试加载初始页面,对我来说就太晚了。
问题:
在从 JQM 之后的插件开始加载第一页之前,有什么方法可以监听其中一个事件或任何其他事件触发?
编辑:
我不能使用 pageinit,因为它会在调用第一页后触发。 pageCreate 的同上,它也不会从插件内部触发。
【问题讨论】:
-
您是否尝试过将
$(document).bind('mobileinit', function(){});与$.mobile.autoInitializePage = false;一起使用? -
我可以从插件内部运行它吗?我想我必须在标记中设置这个选项,比如here?
-
您需要在 jQuery Mobile 包含之前包含
plugin.js文件。或者在绑定到事件的 jQuery Mobile 文件之前至少包含一些代码。 -
@Jasper:不能,因为它经常使用 $.mobile."functions"。
-
也许您可以将整个插件包装到 mobileinit 中?
标签: jquery events jquery-mobile event-listener