0

同じドメインのページを指す iframe を使用して jQuery ダイアログを作成する必要があります。全体ではなく、そのページの特定の ID が必要です。ソースページにリンクがあり、誰かがそれらをクリックすると、ダイアログボックスのあるページが更新され、それを使用できないため、.load() を使用できません。これを回避する方法があることを願っています。これは私が試したものです:

$('<iframe src="'+frameurl+'" id="dialogframe" frameBorder="0" />').contents().find("#idthatiwant").dialog({attributes});
4

1 に答える 1

0

これはまさにあなたが探しているものではないかもしれません. そうでない場合はお詫びします.

アイデアは、通常の ajax である div の href を設定することですが、代わりに ajax を使用するためにクリックおよび送信イベントをオーバーライドします。したがって、iframe のように機能しますが、実際には iframe ではありません。

externalContainer という名前の div があり、js は次のとおりです。

$('#externalContainer form').live("submit", function(event) { 
    $(this).ajaxSubmit({target: '#externalContainer'});
    return false;
});

$('#externalContainer a').live('click', function(event){
    var jthis = $(this);
    if (jthis.attr('href') != "#"){
    event.preventDefault();
        $('#externalContainer').load(jthis.attr('href'));
    }
});

$('#externalContainer').load("file.php");次に、新しい html をロードするために呼び出すだけです。

これは、通常の iframe のすべての「機能」を備えているわけではありませんが、必要なものには機能する可能性があります。

この手法は、stackoverflow に関する別の質問で私が信じていることを見つけたことに注意してください:)。

編集:これにより、「iframe」内からの ajax も許可されることに注意してください。これが、href が「#」と等しくないことを確認する理由です。また、フォーム送信の使用を計画している場合、これは ajaxForm jquery プラグインに依存します。

于 2011-10-26T17:39:40.397 に答える