2

最初に少し背景を説明するので、リストビューを持つ「イベント」と言うページがあります。

 <div class="content-primary">
            <ul data-filter="true" data-icons="false" data-role="listview"
            id="linksList" style=
            "white-space:normal; margin-right: -550px; padding-right: 0px;">
            </ul>
        </div>

このリスト ビューは、RSS フィード リーダーによって読み込まれるために使用されます (以下にコードを投稿します) が、これはすべて動作します。

コードを複製して 2 番目のページを作成しようとすると、問題が発生します。まず、エラーが発生します:

初期化前にリストビューでメソッドを呼び出すことはできません。メソッド 'refresh' を呼び出そうとしました

グーグルで調べた後、これを変更して最初にリストビューを初期化することで修正できることがわかりました

$("#linksList").listview("refresh");

これに

$("#linksList").listview().listview("refresh");

これは新しいエラーを返します

キャッチされていない TypeError: 未定義のプロパティ 'jQuery171004728581593371928' を読み取れません

エラーの詳細:

キャッチされていない TypeError: 未定義の jquery.mobile-1.1.0.min.js:107 のプロパティ 'jQuery171004728581593371928' を読み取れません

a.widget._createSubPages jquery.mobile-1.1.0.min.js:107

a.widget.refresh jquery.mobile-1.1.0.min.js:103

a.widget._create jquery.mobile-1.1.0.min.js:100

a.Widget._createWidget jquery.mobile-1.1.0.min.js:14

a.widget._createWidget jquery.mobile-1.1.0.min.js:17

a.(匿名関数).(匿名関数) jquery.mobile-1.1.0.min.js:12

(匿名関数) jquery.mobile-1.1.0.min.js:14

e.extend.each jquery-1.7.1.min.js:2

e.fn.e.each jquery-1.7.1.min.js:2

a.fn.(匿名関数) jquery.mobile-1.1.0.min.js:13

(無名関数) main.js:45

jquery-1.7.1.min.js:2

o.fireWith jquery-1.7.1.min.js:2

w jquery-1.7.1.min.js:4

d jquery-1.7.1.min.js:4

私のRSSリーダーのJS FIDDLE http://jsfiddle.net/6Ycdm/

最後に、RSS フィードのリンクをクリックすると、追加の詳細などだけがこのページに入力されます。

<div data-role="page" id="contentPage">
    <div data-role="header" id="header" style="color: white;"><img alt=
    "thread" border="0" id="thread" src="./img/logo2.png" style=
    "width: 220px;"></div>

    <div data-role="content">
        <p id="entryText"></p>
    </div>

    <div>
        <a class="ui-btn-active" data-icon="false" data-rel="back"
        data-role="button" style=
        "background: rgb(24,120,143); color: white;">back</a> 
    </div>

    <div data-position="fixed" data-role="footer" data-theme="a" id=
    "footer">
        <h3>Copyright &copy; 2013 </h3>
    </div><!-- /footer -->
</div> 

私が推測するwebappに関する詳細はほとんどありません。現在のRSSフィードリーダーが正常に動作するため、電話で回答を実行できるはずです(phonegapビルドを使用)。本当にそれを複製する方法を探してください。私はアプリで複数ページの方法論を使用していますが、別の html ページを追加してリンクしてもかまいませんが、既に試しましたが役に立ちません! 同じエラーが発生しました。

イベントページを離れて「ニュース」ページに移動した後、リストビューを閉じる必要があるかどうかわかりません。それを行う方法もわかりません。私が推測する可能な解決策のアイデアですか?

助けてくれてありがとう、投稿された回答にはできるだけ早く返信しようとします!

4

1 に答える 1

3
  1. まず、jQuery Mobile で準備されたドキュメントを使用しないでください。これは悪い習慣です。その理由をここで読んでください。

  2. 私があなたのコードでそうしていることから、あなたはライブメソッドを使用しています。Live は非推奨であり、現在は機能していますが、1.8.3 よりも大きいバージョンの jQuery に切り替えると機能しなくなります。メソッド on に置き換えるだけです。

  3. メソッド listview の 2 番目の初期化がなくても、コードは機能するはずです。あなたの本当の問題は、同じIDで2つのリストビューを使用していることだと思います。それらの両方が DOM jQuery にロードされると、常に最初のリストビューにアクセスします。すでに正常に入力されているため、このエラーがスローされます。

    正しいリストビューにアクセスするには 2 つの方法があります。

    次の構文を使用して、正しいリストビューを見つけます。

    $('#PAGE_ID').find('#linksList").listview("refresh");
    

    PAGE_ID は現在のページの ID です。または、pageshow または pagebeforeshow イベントを使用してリストビューにデータを入力する場合は、次の構文を使用します。

    $.mobile.activePage.find('#linksList").listview("refresh");
    

    このソリューションは、pageshow または pagebeforeshow イベントでのみ動作します (pageinit も動作するはずです)。

于 2013-09-26T09:26:00.683 に答える