53 Stimmen

jQuery select Element im übergeordneten Fenster

Gibt es eine Möglichkeit, ein DIV im übergeordneten Fenster mit jQuery auswählen?

Zum Beispiel:

Die Hauptseite enthält dies,

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

Die Popup-Seite enthält ein Formular mit einigen Optionen und einer Schaltfläche "Anwenden". Wenn der Benutzer auf "Anwenden" klickt, wirkt sich dies auf das Stilattribut auf der Hauptseite aus.

Irgendetwas nach der Logik von,

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

121voto

Dr.Molle Punkte 115139

Verwenden Sie den Kontext-Parameter

$("#testdiv",parent.document)

Aber wenn Sie wirklich ein Popup verwenden, müssen Sie auf Öffner anstelle von Elternteil

$("#testdiv",opener.document)

23voto

TARKUS Punkte 2036

Ich habe nach einer Lösung für dieses Problem gesucht und bin auf die vorliegende Seite gestoßen. Ich habe die obige Lösung implementiert:

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

Aber es funktioniert nicht. Vielleicht hat es in früheren jQuery-Versionen funktioniert, aber es scheint nicht zu funktionieren jetzt.

Ich habe diese funktionierende Lösung auf einer anderen Stackoverflow-Seite gefunden: Wie greift man mit Jquery auf das übergeordnete Fensterobjekt zu?

Daraus habe ich diese funktionierende Lösung erhalten:

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

4voto

crodriguez Punkte 193

Ich bin auf dasselbe Problem gestoßen, aber, wie oben erwähnt, hat die akzeptierte Lösung bei mir nicht funktioniert.

Wenn Sie sich innerhalb eines Frames oder iframe-Elements befinden, ist eine alternative Lösung die Verwendung von

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

Hier ist eine kurze Erklärung der Unterschiede zwischen window.opener, window.parent und window.top:

  • window.opener bezieht sich auf das Fenster, das window.open( ... ) aufgerufen hat, um das Fenster zu öffnen, von dem aus es aufgerufen wurde
  • window.parent bezieht sich auf das übergeordnete Element eines Fensters in einem Rahmen oder iframe-Element

2voto

Jashwant Punkte 27629

Sie können auch verwenden,

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

1voto

Thomas Smart Punkte 356

Warum nicht beides, um sicher zu sein?

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X