0

次のjqueryコードを実行して、URLをiframeにロードしようとしています。問題は、読み込まれたばかりの iframe の要素を見つけようとすると、前回のクリックで読み込まれたコンテンツが常に返されることです。最初のクリックは常に null です。誰かがこれを回避するのを手伝ってくれますか? ありがとう

$(document).ready(function() {

    $('.Popup').click(function() {

        $('#myiframe')
                .attr('src', $(this).attr('href'))
                .attr('frameborder', '0')

        return false;
    });
    alert($('#myiframe').contents().find('.name').html())
});
4

3 に答える 3

1

コンテンツを取得する前に、取得した URL が iframe に読み込まれるまで待つ必要があります。これを行うには、jquery .load() 関数を使用できます。このようなもの:

$(document).ready(function() {

 $('.Popup').click(function() {

        $('#myiframe')
                .attr('src', $(this).attr('href'))
                .attr('frameborder', '0')
                .load(function() {
                     alert($(this).contents().find('.name').html())
                })

        return false;
    });

});
于 2012-06-08T16:27:55.027 に答える
0

考えられる理由は、onclick イベント ハンドルを登録した後にアラートを出していることです。あなたがすべきことはこれだと思います:

$(document).ready(function() {

    $('.Popup').click(function() {

        $('#myiframe')
                .attr('src', $(this).attr('href'))
                .attr('frameborder', '0');
        $($("#myIframe").get(0).contentDocument).ready(function() {
            alert($('#myiframe').contents().find('.name').html())
        });
        return false;
    });
});
于 2012-06-08T16:26:40.413 に答える
0

アラートが鳴る前に iFrame が読み込まれるのを待つ必要があるようです。loadそのために関数を使用できます。

$("#myiframe").load(function() {
    alert("iFrame has loaded. You can now get content out of it");
});
于 2012-06-08T16:27:12.660 に答える