2009-08-25 7 views
4

J'ai trouvé que je peux faire ce qui suit:Vérifier si un cadre existe avec jQuery

if($('#notice', parent.frames['header'].document).length>0) { alert("It is here!"); } 

pour vérifier un élément dans un autre cadre.
Existe-t-il un moyen de découvrir le cadre existant? Plus précisément, je cherche à voir si parent.frames ['header']. Document est là.

Existe-t-il un moyen fiable de le faire?

Mise à jour: Voici mon code frameset:

<frameset rows="104,*,22" frameborder="NO" border="0" framespacing="0"> 
    <frame src="header.php" id="header" name="header" scrolling="no" title="Header and Menu" noresize> 
    <frame src="main.php" title="Main content" name="main"> 
    <frame src="footer.php" name="footer" title="Footer" scrolling="NO" noresize> 
</frameset> 

Je suis en train de faire en sorte que je puisse accéder à un div qui vit à l'intérieur de la « tête ». L'inconvénient est que, dans certains cas, le principal est remplacé par un autre jeu de cadres.

Répondre

3

Si vous voulez savoir si un élément existe, vous devez vérifier la propriété de longueur, voir le jQuery FAQ: Dans votre cas

if ($('#myFrame').length) { 
    alert('#myFrame exists'); 
} 

Je pense que vous vouloir:

if ($('frame[name=header]', parent).length) { 
    alert('frame exists'); 
} 

Pourquoi vérifier la propriété de longueur? Parce que si vous passez un sélecteur à jQuery qui ne correspond à rien, le résultat renvoyé est un objet jQuery, n'est pas une valeur falsifiée (null, undefined, 0 ou false), dans un la condition est évaluée à bool, et une valeur non « falsy » est évaluée toujours vrai:

if ($('#nonExisting')) { 
    alert('always true'); 
} 

// because 
!!$('#nonExisting') == true; // and 
!!'hello' == true; 
!!0 == false; 

J'utilisé !! comme exemple d'une manière simple de transformer une expression en son équivalent booléen, ce que l'instruction if fait dans les coulisses. ..

Modifier: En regardant votre f rameset balisage, et en supposant que vous voulez vérifier si le cadre d'en-tête existe depuis la page principale, vous pouvez facilement le faire par:

if (parent.header !== undefined) { 
    // frame exists 
} 

Ou simplement:

if (parent.header) { 
    // frame exists 
} 

Vérifiez cet exemple:

+0

J'ai essayé votre deuxième exemple if ($ ('frame [name = header]', parent) .length) { et cela ne semble pas fonctionner pour moi. Aucune suggestion ? – Jason

+0

Génial, merci pour l'exemple – Jason

1

Vérifiez le sélecteur:

if ($("#myFrame").length) alert("It exists!"); 
+0

Il le fait pour un élément dans le cadre, pas pour le cadre lui-même. Pourquoi diable voulez-vous me voter à cause de cela? C'est complètement indépendant. – Sampson

+0

J'ai voté contre toi parce que quelqu'un ignorant t'a voté. –

+0

Ils ont voté parce que mon exemple fonctionne. La vérification de la longueur du sélecteur lorsque le sélecteur recherche un cadre est une option valide. – Sampson

Questions connexes