2009-08-25 14 views
2

イベントハンドラ(特にiframe)の損失を引き起こすjquery既知の動作があるかどうかを知りたいですか?jquery lost events

私は奇妙な種類の問題を抱えています。 私は2つのiframeで構成されたwebappを構築しました。 最初に最初のiframeにコンテンツを読み込みます。最初のiframeコンテンツDOMにjqueryを使用してイベントイベントハンドラを追加します。 すべて動作します。 ユーザー入力時に、2番目のiframeにページを読み込みます。ここでもjqueryを使っていくつかのイベントハンドラを追加します。 その後、jqueryが最初のiframeでイベントハンドラを失いました。 イベントリスナーを古い方法で追加してもまだ残っているので、「jquery lost」と言った。

+0

のために埋め込まれたオペラ9.7で発生しますか?同じドメインの問題になる可能性があります。 – geowa4

+0

2番目に何かをロードするまで、最初のIフレームで動作します。 iframeを含むページとiframeに読み込まれたページは同じドメインにあります。 イベントハンドラは、子ページからバインドされていますが、「父」 –

+0

wowからではなく、最後の部分が本当に面白いです。 jQueryだけが動いていますか?そうであれば、それを一貫して再現し、サンプルページを作り、バグを提出することができます。それは誰もがそれが起こる良い理由を考えることができないと仮定している。 – geowa4

答えて

0

イベントをバインドする場合は、liveを使用します。このようにして、同じセレクタで新しい要素を追加すると、その要素にイベントがバインドされます。

$("p").live("click", function(){ 
    $(this).after("<p>Another paragraph!</p>"); 
}); 

ページに追加されたすべての後続のPはがあまりにもをバインドさイベントを持っています。

+0

残念なことに、最初のiフレームにはかなり複雑なWebアプリケーションがあり、すべてのバインド関数をライブで置き換えるのは難しく、不可能かもしれません。さらに、最初のiframeのDOMにコンテンツを追加しません。 –

2

問題を解決しました。

問題は、2番目のiframeのsrcが変更されたとき(2番目以降の問題が発生したときは最初のものすべて)に変更され、2番目のフレームがHTMLで静的にコード化されていたためです。

問題を解決するために、私は常に2番目のiframeを削除して、それを再作成し、JavaScriptに動的にDOMに追加します。

問題は、彼らがこれまで最初のiframe内に作業を行うだけMIPS(正確なバージョンについてわからない)