2009-08-25 19 views
4

ich gefunden habe ich folgendes tun:Überprüfen Sie, ob ein Rahmen mit jQuery existiert

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

in einem anderen Rahmen für ein Element zu überprüfen.
Gibt es eine Möglichkeit herauszufinden, ob der Rahmen existiert? Speziell suche ich, ob parent.frames ['header'] .document vorhanden ist.

Gibt es eine zuverlässige Möglichkeit, dies zu tun?

Update: Hier ist mein Frameset Code:

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

Ich versuche, um sicherzustellen, dass ich ein div zugreifen kann, die innerhalb des "Header" lebt. Der Nachteil ist, dass Main in einigen Fällen durch ein anderes Frameset ersetzt wird.

Antwort

3

Wenn Sie, wenn ein Element wissen wollen, vorhanden ist, müssen Sie die Länge Eigenschaft überprüfen, finden Sie in der jQuery FAQ:

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

In Ihrem Fall ich glaube, Sie wollen:

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

Warum die Längeneigenschaft prüfen?

Wenn Sie einen Selektor an jQuery übergeben, der keinem entspricht, ist das zurückgegebene Ergebnis ein jQuery-Objekt, kein falscher Wert (null, undefined, 0 oder false), in einem if statement wird die Bedingung ausgewertet Bool, und ein nicht ‚falsy‘ Wert wird immer auf true ausgewertet:

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

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

I !! als ein Beispiel für eine einfache Art und Weise verwendet, jeden Ausdruck in seine boolean äquivalent drehen, was die if-Anweisung hinter den Kulissen tut. ..

Bearbeiten: Blick auf Ihre f rameset Markup, und unter der Annahme, dass Sie, wenn der Header-Frame von der Hauptseite besteht überprüfen möchten, können Sie es leicht:

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

Oder einfach:

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

prüfen dieses Beispiel:

+0

Ich versuchte Ihr zweites Beispiel if ($ ('frame [Name = Header]', Eltern) .Length) { und das schien nicht für mich arbeiten. Irgendwelche Vorschläge ? – Jason

+0

Super, danke für das Beispiel – Jason

1

Überprüfen Sie den Wähler:

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

Er macht das für ein Element innerhalb des Frames, nicht für den Frame selbst. Warum in aller Welt würdest du mich deswegen abstimmen? Es ist völlig unabhängig. – Sampson

+0

Ich habe Sie abgelehnt, weil jemand, der ignorant war, Sie gewählt hat. –

+0

Sie haben hochgestuft, weil mein Beispiel funktioniert. Die Überprüfung der Länge des Selektors, wenn der Selektor nach einem Rahmen sucht, ist eine gültige Option. – Sampson

Verwandte Themen