2010-07-14 14 views
7

Questo dovrebbe essere semplice, ma io sono stupido ... cosìprogrammazione verificare se il calendario è stato reso

voglio fare una semplice dichiarazione condizionale per vedere se il calendario è già stato reso all'interno di un div . Qualcosa di simile a questo:

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

voglio fare questo in modo che possa rimuovere, poi ri-init il calendario programatically. Fondamentalmente, un pulsante 'reset'.

Qualcuno può farmi sapere la sintassi corretta per verificare se è stato eseguito il rendering di un oggetto fullCalendar?

Grazie in anticipo !!

risposta

6

L'ho capito. jQuery ha un selettore .children(). Sono stato in grado di fare una dichiarazione subordinata alla .length proprietà di quel selettore per vedere se ci fosse qualsiasi contenuto nel div:

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

Un modo alternativo per fare questo, senza jQuery, è:

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

Se si seleziona per qualcosa di più profondo nella struttura del calendario Potrai essere più propensi a prenderlo dopo il rendering. – jasongetsdown

0

Questo è un po 'un hack, ma ogni cella del giorno ha una classe con il formato fc-day-##. L'ultima cella ha il numero 41 (guardalo in firebug). Potresti provare a selezionare td.fc-da-41 e se ottieni elementi, il calendario è completamente caricato.

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

Forse impostato per controllare ogni paio di centinaia di millisecondi con .setTimeout()

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

È possibile controllare qualcosa come facilmente

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