2009-10-02 8 views
5

J'ai une page Web (A) et j'intègre (A) à ma page principale (B) en utilisant iframe. Ce (A) contient un lien qui ferme la fenêtre du navigateur:JQuery recherche d'un élément dans Iframe (par son texte) et ajout de la fonction .click

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

Depuis que j'embedd (A), la capacité proche de (A) est plus fonctionnel. Ce que je dois faire est, quand ce lien est cliqué de (B), je veux cacher mon iframe, en d'autres termes faire ressembler à la fermeture. Donc je dois atteindre ce lien dans l'iframe et comprendre si on clique dessus ou pas (B)?

Aide s'il vous plaît.

Merci

Répondre

11

Je pense que ce qui suit fonctionnera. Nous effectuons essentiellement une "recherche" sur le contenu de votre iframe. Une fois que nous trouvons le lien que nous voulons, nous lions un événement qui fermera le iframe approprié dans le document parent. Notez que votre iframe doit être sur le même domaine que votre page parente, sinon vous ne pourrez pas accéder à ses éléments. De plus, j'ai ajouté une classe au lien pour faciliter la sélection. Je vous suggère de faire aussi cela.

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

Si vous devez absolument baser la liaison sur le texte du lien, vous aurez à faire défiler les liens pour trouver le bon un:

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

bien le lien, il ne le fait pas avoir un (id = closeWindow), il a seulement le texte "Close The Page", comment vais-je obtenir cet élément? – stckvrflw

+0

J'ai essayé et cela n'a pas fonctionné fonction () {\t \t $ ('# de iframeid'). Prêt ( \t fonction \t() \t \t {\t \t \t \t $ ('# iframeid ') .contents() fIND (.' a: visited ') se lient ("clic", la fonction (.) { \t \t \t $ ("# iframeid", top.document) .hide(); \t \t \t }); \t \t \t} \t \t); – stckvrflw

+0

Si c'est votre page, ne pouvez-vous pas ajouter '...'? – Sampson