2017-12-11 10 views
0

divの後にコール関数が動的に取り込まれましたか?

firebase.database().ref('zones').on('value', (snapper) => { 
 
    //For each zone, populate HTML 
 
    snapper.forEach((snap) => { 
 
     var html = '<div id="child">Blahblah</div>'; 
 
     //Add the Injected HTML to the parent div called 'new' 
 
     $("#parent").append(html); 
 
    } 
 
});
<!-- this is the parent div where I inject my HTML from JS --> 
 

 
<div id="parent"> 
 

 
</div>

私は動的にFirebaseからクエリによって移入していdiv要素を持っています。 firebaseクエリは、$("#parent").append(html)を使用してHTMLに挿入するデータを取得します。

今度は、この親divがすべてfirebase呼び出しとhtml注入から取り込まれると、その親divで関数を実行します。これは基本的に各子divを数値的にソートします。

私がしたい機能を実行する前に、親divが完全にポピュレートするのを待つ方法がわかりません。私は、非同期操作のために、私の関数が実行されている親divがまだ人口になっているので、私の問題が発生する前に...

+0

実際のコードをループなどに表示することで、この問題を解決することができます。注意jQueryのappend()は同期的に動作するため、この特定の場合に重要な詳細情報をここで提供する必要があります。 –

答えて

3

をあなたが使用しない理由は、コールが終了したときと懸念しているので、 .oncedocsにあります)は、データを読み込んで1回返します。このようにすれば、すべてのデータを持っていることを知り、それをソートすることができます。

firebase.database().ref('zones').once('value').then(function(snapper) { 
    //For each zone, populate HTML 
    snapper.forEach((snap) => { 
      var html = '<div id="child">Blahblah</div>'; 
      //Add the Injected HTML to the parent div called 'new' 
      $("#parent").append(html); 
    }); 
    // call sort function 
}); 
+0

私の考えがどこに行きましたかまた –

+0

このメソッドを試していますが、関数は期待どおりに子divをソートしません。私は関数がそれが何をしているのか知っているのですが、私がdevツールのコンソールでそれを試してみるとうまくいくからです。 – user3892254

+0

そこに余分な '}'があるかもしれませんか? –

0

私はjqueryに追加コールバックが含まれているとは思わないので putスクリプトあなたが追加しているHTMLの終わりに。

html = html.append('<script>yourfunctiontorunattheend();</' + 'script>'); 

は、その後の操作を行います。

$("#parent").append(html) 

EDIT: は文の後に実行する(コメントを参照してください):

string lcscript = '<script>yourfunctiontorunattheend();</' + 'script>' 
for() { 
... 
} 
$("#parent").append(lcscript); 
+0

私のappendは基本的にforループの内側にあるので、私はこれはうまくいかないと思います。データベースから取得するオブジェクトごとに、そのオブジェクトを使ってhtmlを追加して親divに追加します。あなたのメソッドは、HTMLに追加されるスクリプトオブジェクトを各オブジェクトに追加します。 – user3892254

+0

forループが終了した後、スクリプトを最後に実行しますか? – Wattcey

+0

はい、forループが親divに入力されます。この完全な処理が完了したら、この関数を実行したい – user3892254

関連する問題