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();
}