2009-10-02 5 views
5

Ich habe eine Webseite (A) und ich bin (A) auf meiner Hauptseite (B) mit iframe einbetten. Diese (A) enthält eine Verbindung, die das Browser-Fenster geschlossen wird:JQuery ein Element in Iframe (durch seinen Text) zu finden und hinzuzufügen click-Funktion

<a href="" onclick="window.opener = window; 
    window.close(); 
    return false;">Close The Page</a> 

Da I embedd (A), die enge Fähigkeit in (A) nicht mehr funktionsfähig. Was ich tun muss, ist, wenn dieser Link von (B) angeklickt wird, ich möchte meinen iframe ausblenden, mit anderen Worten, es soll wie Schließen aussehen. Also muss ich diesen Link im iframe erreichen und verstehen, ob er angeklickt ist oder nicht (B)?

Hilfe bitte.

Dank

Antwort

11

Ich denke folgendes funktionieren wird. Wir führen im Grunde eine "Suche" nach dem Inhalt Ihres iframe durch. Sobald wir den gewünschten Link gefunden haben, binden wir ein Ereignis an ihn, das den korrekten iframe im übergeordneten Dokument schließt. Beachten Sie, dass sich Ihr iframe in derselben Domäne wie Ihre übergeordnete Seite befinden muss oder dass Sie nicht auf seine Elemente zugreifen können. Außerdem fügte ich dem Link eine Klasse hinzu, um die Auswahl zu erleichtern. Ich schlage vor, Sie tun dies auch.

$("#iframeID").contents().find("a.closeWindow").bind("click", function(){ 
    $("#iframeID", top.document).hide(); 
}); 

Wenn Sie unbedingt die Bindung auf den Text des Links müssen stützen, werden Sie, um durch die Links müssen die richtige einen zu finden:

$("a", $("#iframeID").contents()).each(function(){ 
    if ($(this).text() == "Close The Page") { 
    $(this).bind("click", function() { 
     $("#iframeID", top.document).hide(); 
    }); 
    } 
}); 
+0

Nun den Link dort nicht der Fall ist habe ein (id = closeWindow), es hat nur den Text "Close The Page", wie bekomme ich dieses Element? – stckvrflw

+0

Ich versuchte dies und es hat nicht funktioniert function() { \t \t $ ('# iframeid'). Ready ( \t \t function() \t \t {\t \t \t \t $ ('# iframeid ') .contents() finden (.' a: visited ') binden ("Klick", Funktion (.) { \t \t \t $ ("# iframeid", top.document) .Hide(); \t \t \t }); \t \t \t} \t \t); – stckvrflw

+0

Wenn es Ihre Seite ist, können Sie '...' nicht hinzufügen? – Sampson