JQuery выбрать элемент в родительском окне

Есть ли способ выбрать DIV в родительском окне, используя jQuery?

Например:

Главная страница содержит это,

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

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

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

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

5 ответов

Решение

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

$("#testdiv",parent.document)

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

$("#testdiv",opener.document)

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

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

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

Я нашел это рабочее решение на другой странице stackru: как получить доступ к объекту родительского окна, используя jquery?

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

window.opener.$("#testdiv") //This works.

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

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

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

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

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

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

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

Почему не оба, чтобы быть уверенным?

if(opener.document){
  $("#testdiv",opener.document).doStuff();
}else{
  $("#testdiv",window.opener).doStuff();
}
Другие вопросы по тегам