web-dev-qa-db-fra.com

élément de sélection jQuery dans la fenêtre parente

Est-il possible de sélectionner une DIV dans la fenêtre parente à l'aide de jQuery?

Par exemple:

La page principale contient ceci,

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

La page contextuelle contient un formulaire avec quelques options et un bouton "Appliquer". Lorsque l'utilisateur clique sur Appliquer, cela affecte l'attribut de style de la page principale.

Quelque chose dans la logique de,

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

Utilisez le paramètre de contexte 

$("#testdiv",parent.document)

Mais si vous utilisez vraiment un popup, vous devez accéder à opener au lieu de parent

$("#testdiv",opener.document)
101
Dr.Molle

J'ai cherché une solution à ce problème et suis tombé sur la présente page. J'ai implémenté la solution ci-dessus:

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

Mais ça ne marche pas. Peut-être que cela fonctionnait dans les versions précédentes de jQuery, mais cela ne semble pas fonctionner maintenant.

J'ai trouvé cette solution de travail sur une autre page stackoverflow: comment accéder à l'objet window parent à l'aide de jquery?

A partir de laquelle j'ai eu cette solution de travail:

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

J'ai rencontré le même problème mais, comme indiqué ci-dessus, la solution acceptée ne fonctionnait pas pour moi.

Si vous êtes dans un élément frame ou iframe, une autre solution consiste à utiliser

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

Voici une explication rapide des différences entre window.opener, window.parent et window.top:

  • window.opener fait référence à la fenêtre appelée window.open (...) pour ouvrir la fenêtre à partir de laquelle
  • window.parent fait référence au parent d'une fenêtre dans un cadre ou un élément iframe
2
crodriguez

pourquoi pas les deux pour être sûr?

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