2010-07-14 60 views
7

這應該是簡單的,但我傻所以...編程方式檢查是否日曆已經呈現

我想做一個簡單的條件語句,看看日曆已經被一個div內呈現。就像這樣:

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

我想這樣做,以便我可以刪除,然後以編程方式重新初始化日曆。基本上,一個'重置'按鈕。

有人可以讓我知道正確的語法來檢查fullCalendar對象是否已被渲染?

預先感謝您!

回答

6

我想通了。 jQuery有一個.children()選擇器。我能夠做的是選擇的.length財產條件語句來看看是否有在div任何內容:

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

的另一種方式做到這一點,沒有jQuery的是:

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

東西,如果你選擇了你會日曆的結構更深層次的東西在完成渲染後更有可能抓住它。 – jasongetsdown 2010-07-14 18:38:39

0

這是一種黑客行爲,但是每一天細胞都有一個格式爲fc-day-##的類。最後一個單元格的編號爲41(在Firebug中檢查它)。您可以嘗試選擇td.fc-da-41,如果您收到任何元素,則日曆將被完全加載。

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

也許將它設置爲每隔幾百毫秒檢查與.setTimeout()

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

您可以檢查等方法容易

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