3

多数の div 要素 (行) を動的に作成しています。すべての行の基本的な形式は同じで、テキストのみが変更されます。行構造が複雑であるため、静的な html ファイルから「基本的な」div をロードし、ロードしたら、各行のパラメーターでいくつかの属性を微調整しようとしています。(Android の xml 定義のアダプターのようなもの)。jQuery と jQuery Mobile を使用しています。

この関数を数回 (行ごとに 1 回) 呼び出します。各呼び出しでparams、その行のデータを含むオブジェクトと、新しく作成された div 要素 (で作成document.createElement("div"))をパラメーターとして渡します。

    function loadRow(params, div){  
        var $div = $(div);        

        $div.load("some_page.html [data-custom-role=row]", function(){
            //FIXME Throws error: object is not a function!!
            var nameElement = $div("[data-custom-role=name]");
            nameElement.text(params.name);
        });
    }


このコードは、FIXME コメントの下の最初の行でこのエラーをスローします。

Uncaught type Error: object is not a function


ソース html ファイル (some_page.html) の (簡略化された) コンテンツ:

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="ISO-8859-1"> 
        </head>
        <body>
            <div data-custom-role="row">
                <p data-custom-role="name"></p>
            </div>
        </body>
    </html>

私がやろうとしているのは、新しく読み込まれた div 内の "p" 要素を選択し、テキスト コンテンツを設定することです。後ですべての行をページに挿入するため、id を使用して "p" 要素を識別することはできず、同じ id を持つ 2 つの要素が存在することはできません。そのため、属性をセレクターとして使用する必要がありますが、同時に多くの行が読み込まれるため、読み込み中の div 内の "p" 要素のみを微調整していることを確認する必要があり、他の行は微調整していません。 div。$divクロージャーが作成されるため、変数はコールバック内で使用できると思いました。

私は何を間違っていますか?コールバック内でロードされたコンテンツを照会および変更するにはどうすればよいですか?

前もって感謝します。

4

1 に答える 1

3

関数を含むが関数ではない DOM 要素を参照しています。

を使用することはできません$div()。オブジェクトの関数を使用.find()して、属性を持つ要素を見つける必要がありますdata-custom-role=name

試す :

   function loadRow(params, div){  
        var $div = $(div);        

        $div.load("some_page.html [data-custom-role=row]", function(){
            $div.find("[data-custom-role=name]").html(params.name);
        });
    }
于 2013-03-06T17:46:34.313 に答える