2

从我关于@ jquery 的主题: https ://forum.jquery.com/topic/multiple-pagebeforecreate-events-triggered-when-jqm-builds-the-page-for-nested-listviews-w-jsfiddle

现在可以理解了,但有点不直观。谷歌并没有太大帮助,主要是指出“使用 pageinit 而不是 doc.ready()”。嵌套列表视图页面中的注释会节省一些时间。只是我还是在点击之前加载页面有点不直观?

问题是:如何检测事件负载的差异?探索事件对象时没有任何闪光。

我在说什么?:) Daedalus 更新:http: //jsfiddle.net/3Shyb/ 原文: http: //jsfiddle.net/jhr007/mDVfP 在 jsfiddle 中,消息被发送到控制台日志。打开并清除控制台。跑。

注意关于“pagebeforecreate Man handle the dom..”等的两条消息。1,然后是 2

如果您编辑 html 并删除嵌套的<ul> ... </ul>,然后运行。你会收到一次消息。

这发生在每个带有子菜单的导航菜单加载的页面上。


http://www.jquerymobile.com/demos/1.1.0/docs/lists/docs-lists.html

当单击带有子列表的列表项时,框架将生成一个新的 ui 页面,其中填充了标题中父项的标题和子元素列表。.. 列表可以嵌套多个级别,所有页面和链接都将由框架自动处理。

4

2 回答 2

0

我发现的解决方案是使用 live/delegate(在 jq 1.7 中已弃用)的现在和未来绑定之类的功能。

所以给 div[date-role=page] 添加一个 id 属性,然后使用 'on' 方法绑定到这些 ids("#pageid1, #pageid2") 上的事件,现在和将来......

$( document ).on( 'pagebeforecreate', "#pageid1, #pageid2" ,
    function (event) {
      console.log('pagebeforecreate ', event.target.id );
    }                    
  );
于 2012-05-24T21:28:26.970 回答
0

不幸的是,您引用的那部分文档是错误的。listview 小部件在创建父页面时创建 ui 页面。不是在单击列表视图项时。这就是为什么您会看到多个 pagecreate 事件。如果您有两个嵌套列表视图,您将看到 3 个 pagebeforecreate 事件。您可以从我在下面粘贴的代码中看到,嵌套列表的子页面与普通的 JQM 页面完全一样。

<div data-role="page" data-url="/_display/&amp;ui-page=0-0" data-theme="null" data-count-theme="c" tabindex="0" class="ui-page ui-body-null">

    <div data-role="header" data-theme="b" class="ui-header ui-bar-b" role="banner">
        <div class="ui-title">Step 1</div>
    </div>

    <div data-role="content" class="ui-content" role="main">
        <ul class="ui-listview">
            <li class="ui-li ui-li-static ui-body-c">Step 1</li>
            <li class="ui-li ui-li-static ui-body-c">Step 2</li>
            <li class="ui-li ui-li-static ui-body-c">Step 3</li>
            <li class="ui-li ui-li-static ui-body-c">Step 4</li>
            <li class="ui-li ui-li-static ui-body-c">Step 5</li>
        </ul>
    </div>

</div>
于 2012-05-19T07:44:10.493 回答