JQuery выбрать элемент в родительском окне - PullRequest
47 голосов
/ 16 мая 2011

Есть ли способ выбрать DIV в родительском окне с помощью jQuery?

Например:

На главной странице есть это,

<div id="testdiv"></div>

Всплывающая страница имеетформа с некоторыми опциями и кнопкой «Применить».Когда пользователь нажимает «Применить», это влияет на атрибут стиля на главной странице.

Что-то в логике,

parent.$("#testdiv").attr("style", content from form);

Ответы [ 5 ]

105 голосов
/ 16 мая 2011

Использовать контекстный параметр

$("#testdiv",parent.document)

Но если вы действительно используете всплывающее окно, вам нужно получить доступ к открыватель вместо parent

$("#testdiv",opener.document)
21 голосов
/ 05 июня 2013

Я искал решение этой проблемы и наткнулся на настоящую страницу.Я реализовал вышеуказанное решение:

$("#testdiv",opener.document) //doesn't work

Но оно не работает.Возможно, оно работало в предыдущих версиях jQuery, но сейчас оно не работает.

Я нашел это рабочее решение на другой странице stackoverflow: как получить доступ к объекту родительского окна с помощью jquery?

Из которого я получил это рабочее решение:

window.opener.$("#testdiv") //This works.
2 голосов
/ 02 марта 2016

Я сталкивался с той же проблемой, но, как указано выше, принятое решение у меня не сработало.

Если вы находитесь внутри элемента frame или iframe, альтернативное решение - использовать

window.parent.$('#testdiv');

Вот краткое объяснение различий между window.opener, window.parent и window.top:

  • window.opener ссылается на окно, которое вызвало window.open (...), чтобы открыть окно, из которого оно называется
  • window.parent ссылается на родителя окна в элементе frame или iframe
2 голосов
/ 08 июля 2013

Вы также можете использовать,

parent.jQuery("#testdiv").attr("style", content from form);

0 голосов
/ 06 июля 2013

почему бы и то и другое не быть уверенным?

if(opener.document){
  $("#testdiv",opener.document).doStuff();
}else{
  $("#testdiv",window.opener).doStuff();
}
...