2009-08-25 8 views
4

に存在するかどうかを確認する:フレームが、私は次の操作を行うことができます発見したのjQuery

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

は別のフレーム内の項目をチェックします。
フレームが存在するかどうか調べる方法はありますか?具体的には、parent.frames ['header']。documentがあるかどうかを調べています。

信頼性の高い方法がありますか?

アップデート:私は「ヘッダ」の内側に住んでいるdiv要素にアクセスできることを確認しようとしている

<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> 

: はここに私のフレームセットコードです。 場合によっては、メインが別のフレームセットに置き換えられるという欠点があります。

答えて

3

あなたは要素は、あなたがlengthプロパティをチェックする必要が存在するかどうかを知りたい場合は、jQuery FAQを参照してくださいしたい:

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

なぜ長さのプロパティを確認しますか?

何も一致しないセレクタを渡すと、返される結果はjQueryオブジェクトであり、条件が評価されたif statementの偽値(null、undefined、0またはfalse)ではないためです。ブール値、および非「falsy」の値がtrueに常に評価されます。

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

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

私はif文は、舞台裏で何をするか、そのブール同等に任意の式を回すの簡単な方法の一例として、 !!を使用しました。 ..

編集:あなたのf単に

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

または::

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

チェックこの例:

マークアップをrameset、そしてあなたは、ヘッダーフレームは、メインページから存在しているかどうかを確認したいと仮定して、あなたは簡単でそれを行うことができます
+0

私はあなたの2番目の例を試しました if($ {'frame [name = header]'、parent).length){ これは私にとってはうまくいきませんでした。助言がありますか ? – Jason

+0

素晴らしい、例のおかげで – Jason

1

チェックセレクタは:私はあなたを考えて、あなたの場合は

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

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

彼はフレーム内の要素であり、フレーム自体ではありません。それで、なぜあなたは私に投票しませんでしたか?それは完全に無関係です。 – Sampson

+0

誰かがあなたを無視して投票したので私はあなたに投票しました。 –

+0

私の例がうまく働いていたので、セレクターがフレームを探すときにセレクターの長さを確認することは有効なオプションです。 – Sampson

関連する問題