1

iframe に問題があります。問題は、コンテンツを iframe でロードするメイン ページとメニューがあることです。メイン ページには div "MessageBox" もあります。1 つの iframe で変数のコンテンツを "MessageBox" に表示するので、メイン ページに全画面メッセージが表示されます。

iframe の例では、これを生成するボタンがあります:

        content="<input type='button' value='OK' class='Ok' id='Ok'/>";
        MessageBox("Click OK", content, "child", "400", "170");

iFrame には jquery 関数があります。

$(".Ok",window.parent.document).live("click",function(){
    alert("OK");
});

最初にこのiframeに入ったときだけ、OKならすべて。アラート(「OK」)とそのクールが表示されますが、メニューから他のiframeをクリックしてこのiframeをもう一度クリックすると、アラート(「OK」)が2回表示され、他のiframeをもう一度クリックしてこのiframeに戻ると3回表示されますアラート(「OK」)。

誰かがこの問題で私を助けることができますか? iframe キャッシュなどはありますか? iframeを開くたびにメモリに保存され、「.Ok」という呼び出しが多く、「OK」ボタンをクリックすると、iframeをメモリに保存した回数だけlibeクリックメソッドが実行されると思いますか?

助けてください :)

4

1 に答える 1

1

問題は、iframeメニューから別のものを追加するたびに、クラスを持つすべての要素に新しいクリックハンドラーを登録している'.Ok'ため、既にロードしたすべての iframe 要素にも登録されていることです。

編集: .Okiframe 内の要素 のクリックのみを登録する$('.Ok').live('click', function() {...}); には、親ウィンドウへのスコープなしで: を使用します。ところで:$('...').live(...)非推奨です。.on() を使用して、イベント ハンドラーをアタッチします。

于 2013-10-08T13:28:12.960 に答える