jQuery show () не работает в iFrame

0

Я пытаюсь сделать что-то действительно простое, но все же просто не работает. Im пытается показать div на загрузке страницы в iFrame. Если я сам просматриваю страницу html, div показывает. Кто-нибудь знает о любых возможных проблемах с jQuery в iFrames? Если я сделаю предупреждение(), это также покажет.

Мой базовый код ниже:

Ссылка на iFrame

     <li>
         <iframe src="/Markup/Page2.htm" marginheight="0" marginwidth="0" frameborder="0"></iframe>
     </li>

HTML внутри Page2.htm

<div class="Container">
    <p class="ShowThis" style="display:none;">Show me on load</p>
</div>

jQuery внутри Page2.htm

$(document).ready(function () {
    $('.ShowThis').show();
});
Теги:
iframe

2 ответа

2
Лучший ответ

Вам нужно получить ссылку на iframe и получить доступ к ее документу, а затем выполнить поиск в DOM с документом iframe в качестве контекста.

Живой демо здесь (нажмите).

Здесь общий JavaScript для этого:

$iframe = $('#myIframe'); 
$iframeElem = $('#myIframeElem', $iframe.contents());

И код, специфичный для вашего использования:

Разметка:

<iframe id="myIframe"></iframe>

В стр.2.html:

<div class="Container">
  <p class="showThis" style="display:none;">Show me!</p>
</div>

JavaScript:

iframe = $('#myIframe');

$iframe.load(function() {
  $iframeElem = $('.showThis', $iframe.contents());
  $iframeElem.show();
});

$iframe.attr('src', 'page2.html');
  • 1
    как насчет .contents(); ?
  • 0
    @connorspiracist хорошая точка зрения !!
Показать ещё 1 комментарий
0

Я думаю, что проблема с этим кодом заключается в том, что вы неправильно ссылаетесь на элементы Iframe правильно. Класс контейнера в пределах Iframe должен быть доступен, ссылаясь на Iframe.

   var iframe=$("#Iframe");
$("#Iframe").load(function(e) {


        $(iframe.contentWindow.document.body).find('.Container').bind('event',function( event ){

         //write code here

        });
    });
  • 0
    И, пожалуйста, не забудьте дать правильное удостоверение личности своему Iframe. В моем случае идентификатор был "Iframe"

Ещё вопросы

Сообщество Overcoder
Наверх
Меню