У меня есть 2 кадра на одной странице, как это ( home.html )
<frameset rows="50%, 50%">
<frame id="treeContent" src="treeContent.html" />
<frame id="treeStatus" src="treeStatus.html" />
</frameset>
и затем в одном кадре ( treeStatus.html ) у меня есть что-то вроде
<body style="margin: 0px">
<div id="statusText">Status bar for Tree</div>
</body>
Я хочу из верхнего окна манипулировать div, расположенным в дочернем фрейме, с помощью jquery (например, показать и скрыть).
Я видел несколько вопросов вроде этого , и они предлагают следующее
$(document).ready(function(){
$('#treeStatus').contents().find("#statusText").hide();
});
Я не знаю, работает ли это с фреймами iframe, но в моем случае, когда у меня есть простые фреймы, это не работает. Код находится внутри home.html
Вот некоторый вывод из консоли Firebug
>>> $('#treeStatus')
[frame#treeStatus]
>>> $('#treeStatus').contents()
[]
>>> $('#treeStatus').children()
[]
Так как мне получить доступ к элементам фрейма из верхнего фрейма? Я что-то здесь упускаю?
Ответ
После объединения обоих ответов правильный путь будет
$('#statusText',top.frames["treeStatus"].document).hide();
Чтобы это работало, фрейм должен иметь атрибут name помимо идентификатора, например:
<frameset rows="50%, 50%">
<frame id="treeContent" src="treeContent.html" />
<frame name="treeStatus" id="treeStatus" src="treeStatus.html" />
</frameset>