2011-01-05 8 views
9

iframe内のdivを見つけるためにjqueryを使用しようとしています。私が以下で使っているより良い方法はありますか?私はIFRAMEのDIVにアクセスするための別の方法を試してみました理由ですiframe内のdivを見つける方法

$('#Iframe').contents().find('#MyDiv') 

$('#Iframe').contents().find('#MyDiv') 

function atmslidein(){ 
    $("#customer").ready(function(){   
     if($('#customer').attr('src')=='ATM.html') 
     { 
      $('#customer').contents().find('.atm_page').css('margin-left', '270px'); 
      $('#customer').contents().find('.tele').css('display', 'none'); 
     } 
    }) 
} 

私はこの仕事をするために、ほぼ一週間試してみました。


は、とにかく私は、IFRAMEのドキュメントが持つべき何かを発見しただけにして上記の機能が正常に動作します。

<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 

私の問題は、おかげで解決しています。 しかし、なぜこれが必要なのか誰かが説明できますか?

+3

何その方法と間違っています? – lonesomeday

+0

なぜ '$( '#IFrame #MyDiv')'? –

+0

@Polybosそれは別のドキュメントなので、そのセレクタでは見つかりません。 – lonesomeday

答えて

13

jQueryはcontentWindow/Documentのコンテンツにそのようにアクセスすることはできません。過去には、私はこれを行うために持っていた:

$('#iframe').each(function() { 
    $('#MyDiv', this.contentWindow.document||this.contentDocument); 
}); 

** this.contentWindow||this.contentDocumentがIEや他のほとんどのブラウザ間で正しく動作するために必要とされることに注意してください。コンテンツウィンドウが表示されたら、ドキュメントを選択する必要があります。次に、iframeのソースが同じドメインにある場合に限り、jQueryを使用してDOMを操作またはトラバースすることができます。

** contentWindow/Documentを取得した後にドキュメントを指定しないエラーを修正するように更新されました。

+1

これは 'this.contentWindow.document'でなければなりません。 – lonesomeday

+0

ありがとうございます。 – HackedByChinese

+0

あなたのソリューションに感謝します。 それは私のケースでは動作しませんでした – rajaishbt

4

ないブラウザは文句を言わない

-1

使用セレクタコンテキストセキュリティ上の理由のためにそれを許可した場合のiframeソースは、あなたのページと同じドメイン内にある場合にのみ動作します:

var frame = $('#frame_id'); 
var div = $('#mydiv', frame); 
+3

jQueryはiframeのコンテンツドキュメントを直接トラバースできないため、これは機能しません。 – HackedByChinese

関連する問題