2013-12-13 69 views
0

我試圖做一些非常簡單的事情,但它只是不工作。我試圖在iFrame中的頁面加載中顯示div。如果我查看div頁面本身的div顯示。有沒有人知道在iFrame中jQuery的任何可能的問題?如果我做了alert(),它也會顯示。jQuery show()不能在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(); 
}); 

回答

2

您需要得到參考訪問iframe並訪問其文檔,然後使用iframe文檔作爲上下文搜索DOM。

Live demo here (click).

這裏是通用的JavaScript這樣的:

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

而具體到您的使用代碼:

標記:

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

在page2.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();'? – iConnor

+0

@connorspiracist好點! – m59

+0

謝謝!真棒解決方案。 – Dale

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一個正確的ID。在我的情況下,ID是「Iframe」 –