2011-05-16 9 views
38

¿Hay alguna forma de seleccionar un DIV en la ventana principal utilizando jQuery?Elemento de selección de jQuery en la ventana primaria

Por ejemplo:

página principal contiene esto,

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

página emergente tiene un formulario con algunas opciones y un botón 'Aplicar'. Cuando el usuario hace clic en aplicar, afecta el atributo de estilo en la página principal.

Algo a lo largo de la lógica de,

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

posible duplicado de [cómo acceder al objeto de la ventana padre utilizando jquery?] (Http://stackoverflow.com/questions/2167455/how-to-access-parent-window-object-using-jquery) –

Respuesta

94

Utilice el contexto de parámetros

$("#testdiv",parent.document) 

Pero si realmente utiliza una ventana emergente, es necesario acceder a la abridor de en lugar de padre

$("#testdiv",opener.document) 
+0

Perfecto gracias. – Rob

+0

Aprendí algo nuevo hoy, Gracias :) – Manu

14

Busqué una solución a este problema y encontré la página actual. Implementé la solución anterior:

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

Pero no funciona. Tal vez funcionó en versiones anteriores de jQuery, pero parece que no funciona ahora.

me encontré con esta solución de trabajo en otra página StackOverflow: how to access parent window object using jquery?

Desde que me dieron esta solución de trabajo:

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

Awesome mate! @ ¡Dr.Molle estaba demasiado confiado! –

+0

..o realmente funcionó en 2011.Para que funcione la solución de esta respuesta, ¿esa ventana emergente debe tener ya cargada jQuery? – Dinerdo

0

por qué no, así para estar seguro?

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

También se puede utilizar,

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

1

me encontré con el mismo problema, pero, como se ha dicho, la solución aceptada no funcionó para mí.

Si está dentro de un elemento de bastidor o marco flotante, una solución alternativa es utilizar

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

Here's a quick explanation of the differences between window.opener, window.parent and window.top:

  • window.opener se refiere a la ventana que se llama window.open (.. .) para abrir la ventana desde la que se llama
  • window.parent hace referencia al elemento primario de una ventana en un marco o elemento iframe
Cuestiones relacionadas