2010-07-14 9 views
7

Cela devrait être simple, mais je suis stupide si ...Programmatically vérifier si le calendrier a été rendu

Je veux faire une simple déclaration conditionnelle pour voir si le calendrier a déjà été rendu dans un div . Quelque chose comme ceci:

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

Je veux le faire pour que je puisse supprimer, puis ré-initialiser le calendrier programatically. Fondamentalement, un bouton «reset». Est-ce que quelqu'un peut me faire savoir la syntaxe appropriée pour vérifier si un objet fullCalendar a été rendu?

Merci d'avance !!

Répondre

6

Je l'ai compris. jQuery a un sélecteur .children(). Je suis en mesure de faire une déclaration conditionnelle à la propriété .length de ce sélecteur pour voir s'il y avait un contenu dans le div:

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

Une autre façon de le faire, sans jQuery, est:

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

Si vous sélectionnez quelque chose plus profond dans la structure du calendrier que vous aurez être plus susceptible de l'attraper une fois le rendu terminé. – jasongetsdown

0

Ceci est une sorte de piratage, mais chaque cellule de jour a une classe au format fc-day-##. La dernière cellule a le numéro 41 (vérifiez-le dans firebug). Vous pouvez essayer de sélectionner td.fc-da-41 et si vous obtenez des éléments alors le calendrier est entièrement chargé.

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

Peut-être configuré pour vérifier toutes les centaines de millisecondes ou deux avec .setTimeout()

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

Vous pouvez vérifier quelque chose comme facilement

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