mam 2 ramek w jedną stronę, jak to (/home.html)Jak do ramy (nie iframe) zawartość z jQuery
<frameset rows="50%, 50%">
<frame id="treeContent" src="treeContent.html" />
<frame id="treeStatus" src="treeStatus.html" />
</frameset>
a następnie w jednej ramce (treeStatus.html) I mieć coś takiego jakChcę z górnego okna manipulować div znajdującym się w ramce podrzędnej poprzez jquery (np. pokaż i ukryj).
Widziałem severalquestionslikethis i sugerują następujące
$(document).ready(function(){
$('#treeStatus').contents().find("#statusText").hide();
});
ja nie wiem, czy to działa z iframe, ale w moim przypadku, gdy mam proste ramki nie wydają się działać. Kod jest umieszczony wewnątrz strony home.html
Oto wyjście z konsoli firebug
>>> $('#treeStatus')
[frame#treeStatus]
>>> $('#treeStatus').contents()
[]
>>> $('#treeStatus').children()
[]
Więc jak mam dostęp do elementów ramowych z górnej ramki? Czy coś mi umyka?
Odpowiedź
Po połączeniu obu odpowiedzi tutaj, prawidłowy sposób jest
$('#statusText',top.frames["treeStatus"].document).hide();
Aby to działało rama musi mieć nazwę atrybut oprócz id, tak:
<frameset rows="50%, 50%">
<frame id="treeContent" src="treeContent.html" />
<frame name="treeStatus" id="treeStatus" src="treeStatus.html" />
</frameset>
Tylko uwaga : dlaczego używasz ramek, kiedy możesz użyć 'position: fixed', aby dodać pasek stanu (lub log sugerowany przez rozmiar) zawsze w dolnej części okna ekranu ... obsługującego starą przeglądarkę? – alex
@alex to tylko minimalny przykład, który stworzyłem dla stackoverflow. Prawdziwa aplikacja jest zupełnie inna. Jest to bardziej skomplikowane niż proste paski stanu. Ramki są wymagane (nie pytaj!). – kazanaki
OK, bez obaw. Pomyślałem, że dodam to (niektórzy ludzie nie wiedzą o 'position: fixed'). – alex