2010-02-02 140 views
0

我是js noob。我使用的jQuery FullCalendar插件公開了一個eventClick(calEvent,jsEvent,view)事件,當你點擊日曆上的一個事件時被調用。在我的事件處理程序中,我想彈出一個對話框,詢問用戶是否只想編輯一個重複事件或整個事件。問題是THAT對話框的按鈕單擊處理程序需要訪問calEvent變量,但我必須在$(document).ready內部實例化對話框,但是不在eventClick函數之外。jquery ui對話框 - 按鈕點擊事件處理程序

這裏是我到目前爲止的代碼:

$(document).ready(function() { 
    $('#calendar').fullCalendar({ 
    events: getEvents, 
    header: { 
     left: 'title', 
     center: 'prev,next', 
     right: 'today month agendaWeek agendaDay' 
    }, 
    theme: true, 
    eventClick: function(calEvent, jsEvent, view) { 
     if(calEvent.readOnly == true) { 
     return; 
     } 
     if(calEvent.recurring) { 
     if(calEvent.persisted) { 
      editOccurrence(calEvent); 
     } else { 
      $("#edit_type_dialog").dialog("open"); 
     } 
     } else { 
     editEvent(calEvent); 
     } 
    } 
    }); 

    $("#edit_type_dialog").dialog({ 
    modal:true, 
    autoOpen: false, 
    buttons: { 
     All:function() { 
     $(this).dialog("close"); 
     editEvent(calEvent); 
     }, 
     This:function() { 
     $(this).dialog("close"); 
     editOccurrence(calEvent); 
     }, 
     Cancel:function() { 
     $(this).dialog("close"); 
     } 
    } 
    }); 

    function getEvents(start, end, callback) { 
    //get some events 
    } 

    function editEvent(calEvent) { 
    alert("event edited"); 
    } 

    function editOccurrence(calEvent) { 
    alert("occurrence edited"); 
    } 
}); 

所以現在的問題歸結爲:我怎麼得到calEvent到按鈕單擊事件處理程序從eventClick功能edit_type_dialog?

回答

0

這裏就是我所做的(不知道這是否是值得推薦的,但它的工作原理):

1)將對話實例進入eventClick方法,從而使它進入calEvent變量。 2)在fullCalendar實例化之外,但仍在$(document).ready()之內我添加了$(「#edit_type_dialog」)。hide()

相關問題