2009-10-02 8 views
5

Ho una pagina web (A) e sto incorporando (A) alla mia pagina principale (B) usando iframe. Questo (A) contiene un link che chiude la finestra del browser:JQuery trova un elemento all'interno di Iframe (dal suo testo) e aggiunge la funzione .click ad esso

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

Da quando ho embedd (A), la stretta capacità in (A) non è più funzionale. Quello che devo fare è, quando questo link viene cliccato da (B), voglio nascondere il mio iframe, in altre parole farlo sembrare come la chiusura. Quindi devo raggiungere quel link nell'iframe e capire se è cliccato o meno (B)?

Guida per favore.

Grazie

risposta

11

Sto pensando che quanto segue funzionerà. Fondamentalmente eseguiamo una "ricerca" sul contenuto del tuo iframe. Una volta trovato il link che vogliamo, associamo un evento ad esso che chiuderà l'iframe corretto nel documento principale. Tieni presente che l'iframe deve trovarsi nello stesso dominio della pagina principale o che non potrai accedere ai suoi elementi. Inoltre, ho aggiunto una classe al link per rendere più facile la selezione. Ti suggerisco anche di farlo.

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

Se è assolutamente necessario basare il legame sul testo del collegamento, dovrete per scorrere i link per trovare quello giusto:

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

Bene il link non ci fa avere un (id = closeWindow), ha solo il testo "Chiudi la pagina", come otterrò quell'elemento? – stckvrflw

+0

Ho provato questo e non ha funzionato function() { \t \t $ ('# iframeid'). Ready ( \t \t function() { \t \t \t \t \t \t $ ('# iframeid ') .contents() TROVA (.' a: visited ') legare ("click", la funzione (.) { \t \t \t $ ("# iframeid", top.document) .nascosto(); \t \t \t }); \t \t \t} \t \t); – stckvrflw

+0

Se è la tua pagina, non puoi aggiungere '...'? – Sampson

Problemi correlati