Ответ 1
Попробуйте следующее:
$('#findthis', window.parent.frames[0].document)
Смотрите предыдущий вопрос/ответ: Запустите JQuery в контексте другого фрейма
Я пытаюсь получить доступ к элементу, который находится внутри фрейма, но до сих пор ему не удавалось добраться до него. Я прочитал много примеров здесь, в stackoverflow и в документации jQuery, но все примеры, которые я видел, относятся к iFrames, которые ведут себя по-другому, чем традиционные. Моя структура страницы показана ниже, когда фактическое содержимое удалено:
<html>
<head></head>
<frameset>
<frame name="Menu"><html><body>
<!--Menu contents-->
</body></html></frame>
<frameset>
<frame name="SettingsTree"><html><body>
<!--Setting options-->
</body></html></frame>
<frame name="SettingsGrid" id="SettingsGrid"><html><body>
<div id="findthis"></div>
<!--Setting grid values-->
</body></html></frame>
</frameset>
</frameset>
</html>
Способ получения содержимого "findthis" внутри iFrame будет
$('#SettingsGrid').contents().find('#findthis')
однако это ничего не возвращает. Объект $('# SettingsGrid') существует с длиной 1 и всем html, который я ожидал бы от него. Однако, когда я вызываю .contents() на этом объекте, он ничего не возвращает. Я не знаю, связано ли это с тем, что он не был правильно загружен в DOM или если есть другие проблемы.
Попробуйте следующее:
$('#findthis', window.parent.frames[0].document)
Смотрите предыдущий вопрос/ответ: Запустите JQuery в контексте другого фрейма
Это сработало для меня, если в кадре есть имя, а также id:
$('#frame_id',top.frames["frame_name"].document) ...
Мое лучшее рабочее решение в режиме IE8/IE11 Enterprise с jQuery 1.11.1:
$('#findthis', $('#SettingsGrid')[0].contentWindow.document)
Вы пробовали $('#findthis', $('#SettingsGrid'))
?
Второй аргумент во внешнем jquery - это контекст, в котором нужно выполнить поиск, на который ссылается первый аргумент. Если второй аргумент не задан, он по умолчанию является корневым.