2010-07-18 1 views

Antwort

4

Siehe http://api.jquery.com/contents/ für den Zugriff auf Inhaltsdokument eines Iframe.

könnte eine Lösung für Ihre Frage:

$("iframe#name").contents().find(".fineme").bind("mouseover", function() { alert("Found me"); }); 
+0

Interessant, aber das scheint auch nicht zu funktionieren? – AnApprentice

+0

Funktioniert für mich. Vielleicht sollte die Klasse ".findme" statt ".fineme" sein? –

+2

Möglicherweise müssen Sie dies in eine Prüfung einschließen, um sicherzustellen, dass der Iframe geladen wurde. Wenn Sie versuchen, auf den Inhalt zuzugreifen, bevor der Iframe geladen wurde, können Sie ihn nicht finden. Wickeln Sie es in $ ("iframe # name"). Load(). – naivedeveloper

1

Ja, so scheint es, dass, wenn Sie standardmäßig einen Selektor aus dem übergeordneten Fenster laufen, es wird nicht Elemente innerhalb des iframe finden. Sie können jQuery jedoch explizit den Kontext geben, um in den Iframe zu schauen.

Eine Möglichkeit, dies zu tun wäre:

var iframe = $("#someIframeId"); 
$(".fineme",iframe.get(0).contentDocument).mouseover(function(){alert('hi')}); 

HINWEIS: Dies funktioniert nur, wenn sowohl der übergeordnete Standort und die IFrame auf der gleichen Domäne sind. Weitere Informationen hierzu finden Sie unter: http://madskristensen.net/post/Iframe-cross-domain-JavaScript-calls.aspx

+1

Interessant, aber das scheint nicht zu funktionieren? – AnApprentice

+1

Eine Sache zu beachten: Damit dies funktioniert, muss Ihr iframe auf derselben Domain wie Ihre Seite sein. Wenn sie auf verschiedenen Domains sind, glaube ich, dass die Browser-Sicherheit das verhindert. –

+0

Das funktioniert für native jQuery, aber was ist mit jQuery UI-Objekten? Wenn Sie zum Beispiel die Größe des Elements ändern, wird der Mauskontext nicht angezeigt. Sie müssen auf die größenveränderbaren Ziehpunkte klicken und Ihre Maus außerhalb des Iframes ziehen, damit sie auf Mausbewegungen reagieren kann. – naivedeveloper

1

Ich hatte ein ähnliches Problem und fand eine Lösung, die für mich funktioniert. Versuchen Sie folgendes:

document.getElementById('iframe_id').contentWindow.$('.fineme').on(...) 

Es funktioniert für alle jquery Funktionen, sondern hört auch für Veranstaltungen auf dem iFrame dom jQuery.