2017-06-15 15 views
2

私のアプリケーションでは、div要素を親div要素に動的に追加するコードを追加しました。 $('#FrameId').contents().find('#id');を使用して、定義済みのiframe div要素にアクセスできます。しかし、div要素を新しく追加しようとすると、は未定義と表示されます。なぜ新しく追加されたdiv要素にアクセスできないのですか?コードの下に使用され、私が新しく追加されたdiv要素を取得しようとするとiframeから動的に作成された要素のイベントバインド

$('#frameId').contents().find("#id").append("<div class="sample">Some text</div>"); 

、::

コードの下に使用される新しいdiv要素を追加するために

$('#frameId').contents().find(".sample").click(function(){}); 

で、クリックイベントがトリガされません.sample div要素を見つけることができないためです。

+1

プッシュロード関数$( '#1 frameIDの')内部にそれらのコード。負荷(関数(){$(この).contentsを()。( "#IDが")。追加見つけます(」 (){});}); $ {this} – JYoThI

+0

新しい要素がDOMに追加されていることを確認しましたか? –

+0

[Delegate](http://api.jquery.com/delegate)、特定のセットに基づいてセレクタに一致するすべての要素(**現在または将来**)に1つ以上のイベントにハンドラをアタッチしますルート要素。 – Munzer

答えて

2

iframe loadイベントは、下記のサンプルをご覧ください。

、動的に作成された要素のclickイベントのために、あなたは彼らがに追加され 子孫要素からイベントを処理できるという利点があるon().

委任イベントを使用して結合「委任」を作成する必要がありますドキュメントは後で表示されます。

$('#frameId').on('load', function(){ 
    $(this).contents().find('body').on('click', '.sample', function(e){ 
     //Do some stuff 
    }); 
}); 
+0

このコードを試しましたが、機能しません。新しく追加された要素はDOM要素には付けられていないと思います。私が新しく追加された要素を取得しようとしたとき、私はそれを得ることができません。しかし、私は同じHTMLコードをiframeにあらかじめ定義して追加してみました。私はそれを手に入れることができます。何か案が? @Curiousdev – Nijandhan

+0

デリゲートイベントを使用した後、正常に動作しています。 – Nijandhan

関連する問題