2010-07-14 4 views
7

Dies sollte einfach sein, aber ich bin dumm so ...überprüfen, um zu sehen, ob Programmatically Kalender gemacht wurden

Ich mag schon innerhalb eines div gemacht worden ist, wenn der Kalender um zu sehen, eine einfache bedingte Anweisung tun . Etwas wie folgt aus:

if ($('#calendar').fullCalendar()) 
{ 
    alert("calendar exists!!"); 
} 

Ich möchte, dies zu tun, so dass ich entfernen, dann den Kalender programmatisch wieder init. Im Grunde eine "Reset" -Taste.

Kann mir bitte jemand die richtige Syntax mitteilen, um zu überprüfen, ob ein FullCalendar-Objekt gerendert wurde?

Vielen Dank im Voraus!

Antwort

6

Ich fand es heraus. jQuery hat einen .children() Selektor. Ich konnte eine bedingte Aussage über die .length Eigenschaft dieser Wähler tun, um zu sehen, ob es irgendein Inhalt in der div war:

if ($('#calendar').children().length > 0) { 
    alert("calendar exists!!"); 
} 

Eine alternative Möglichkeit, dies zu tun, ohne jQuery ist:

getElementById('calendar').hasChildNodes() 
+0

etwas zu überprüfen Wenn Sie etwas wählen tiefer in die Struktur des Kalender, den Sie werde Es ist wahrscheinlicher, dass Sie es nach dem Rendern abfangen. – jasongetsdown

0

Dies ist eine Art Hack, aber jede Zelle Tag hat eine Klasse mit dem Format fc-day-##. Die letzte Zelle hat die Nummer 41 (check it out in firebug). Sie könnten versuchen, td.fc-da-41 auszuwählen und wenn Sie irgendwelche Elemente erhalten, dann ist der Kalender voll geladen.

if ($('td.fc-day-41').size() > 0) { 
    //calendar ready 
} 

setzen es Vielleicht kann alle paar hundert Millisekunden mit .setTimeout()

var checkCal = function() { 
    if ($('td.fc-day-41').size() > 0) { 
     //calendar ready 
    } else { 
     window.setTimeout(checkCal(), 200); 
    } 
} 
0

Sie überprüfen, wie leicht

if($('#calendar>*').length !== 0) alert("calendar exists!!");