2

@ jqueryに関する私のトピックから: https ://forum.jquery.com/topic/multiple-pagebeforecreate-events-triggered-when-jqm-builds-the-page-for-nested-listviews-w-jsfiddle

今では理解できますが、少し直感的ではありません。グーグルはあまり役に立たず、主に「doc.ready()ではなくpageinitを使用する」と指摘しました。ネストされたリストビューページのメモは、時間を節約できたでしょう。クリックする前にページが読み込まれるのは私だけですか、それともちょっと直感的ではありませんか?

問題は、イベントの負荷の違いをどのように検出するかです。イベントオブジェクトを探索している間、何も輝いていませんでした。

私は何について話しているのですか?:) Daedalusによる更新: http: //jsfiddle.net/3Shyb/ オリジナル: http: //jsfiddle.net/jhr007/mDVfP jsfiddleでは、メッセージはコンソールログに送信されます。コンソールを開いてクリアします。走る。

「pagebeforecreateManhandlethe dom ..」などに関する2つのメッセージに注意してください。1、次に2

HTMLを編集してネストされたを削除する場合は<ul> ... </ul>、を実行します。あなたは一度メッセージを受け取ります。

これは、サブメニューがあるナビゲーションメニューでページが読み込まれるたびに発生します。


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

子リストを持つリストアイテムがクリックされると、フレームワークは、ヘッダーの親のタイトルと子要素のリストが入力された新しいUIページを生成します。..リストは複数のレベルの深さでネストでき、すべてのページとリンクはフレームワークによって自動的に処理されます。

4

2 に答える 2

0

引用したドキュメントのその部分は、残念ながら間違っています。リストビューウィジェットは、親ページが作成されるときにUIページを作成します。リストビューアイテムがクリックされたときではありません。これが、複数のpagecreateイベントが表示される理由です。ネストされたリストビューが2つある場合は、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 に答える
0

私が見つけた解決策は、ライブ/デリゲート(jq 1.7で非推奨)のような機能の現在および将来のバインディングを使用することでした。

したがって、id属性をdiv [date-role = page]に追加し、「on」メソッドを使用して、これらのid( "#pageid1、#pageid2")のイベントにバインドします。

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