Ho 2 fotogrammi in una pagina come questa (home.html)Come accedere telaio (non iframe) contenuti da jQuery
<frameset rows="50%, 50%">
<frame id="treeContent" src="treeContent.html" />
<frame id="treeStatus" src="treeStatus.html" />
</frameset>
e poi in un frame (treeStatus.html) I avere qualcosa di simile
<body style="margin: 0px">
<div id="statusText">Status bar for Tree</div>
</body>
che voglio dalla finestra in alto a manipolare il div si trova nella cornice del bambino tramite jQuery (ad esempio, mostrare e nascondere).
ho visto severalquestionslikethis e suggeriscono il seguente
$(document).ready(function(){
$('#treeStatus').contents().find("#statusText").hide();
});
Non so se questo funziona con iframe, ma nel mio caso dove ho semplici cornici non sembra funzionare. Il codice è inserito all'interno di home.html
Ecco alcune uscita dalla console di Firebug
>>> $('#treeStatus')
[frame#treeStatus]
>>> $('#treeStatus').contents()
[]
>>> $('#treeStatus').children()
[]
Allora, come faccio accedere agli elementi del telaio dal telaio superiore? Mi sto perdendo qualcosa qui?
risposta
Dopo combinando entrambe le risposte qui, il modo corretto è
$('#statusText',top.frames["treeStatus"].document).hide();
A questo scopo il telaio deve avere il nome attributo parte la id, così:
<frameset rows="50%, 50%">
<frame id="treeContent" src="treeContent.html" />
<frame name="treeStatus" id="treeStatus" src="treeStatus.html" />
</frameset>
solo una nota : perché usare i frame quando si può usare 'position: fixed' per aggiungere una barra di stato (o un log suggerito dalla dimensione) sempre nella parte inferiore del viewport ... supportando un browser antico? – alex
@alex questo è solo un esempio minimale che ho creato per StackOverflow. La vera applicazione è completamente diversa. È più complicato delle semplici barre di stato. I frame sono un requisito (non chiedere!). – kazanaki
OK, non preoccuparti. Ho solo pensato di aggiungere che (alcune persone non sanno di 'position: fixed'). – alex